16.1-uC/OS-III同步 (任务内建信号量)

时间:2023-03-09 23:18:20
16.1-uC/OS-III同步 (任务内建信号量)

1.经常通过发送信号量实现同步。每个任务都有内建的信号量,通
过任务内建的信号量不仅可以简化信号量通信的代码而且更加有效。

16.1-uC/OS-III同步 (任务内建信号量)

与任务内建的信号量相关的函数都是以 OSTaskSem???()为前缀
的。相关的代码都在OS_TASK.C中。

函数名 功能
OSTaskSemPend() 等待一个任务信号量
OSTaskSemPendAbort() 取消等待
OSTaskSemPost() 发送信号量给任务
OSTaskSemSet() 设置信号量计数值

2.挂起(等待)任务信号量

当任务被创建时,也会内建一个信号量,信号量计数值初始化为0。

3.提交(标记)任务信号量

ISR或任务通过调用 OSTaskSemPost()提交任务信号量 。

4.双向同步

两个任务间可以用两个信号量实现双向同步。任务与ISR间不能双向同步,

因为ISR中不能等待信号量( ISR中不能有阻塞呼叫)。

16.1-uC/OS-III同步 (任务内建信号量)

双向同步可以由两个外部信号量实现,但使用任务信号量会更加简单。