当信号量值大于0,任务调用OSSemPend()函数接收信号量时:

当信号量值等于0,任务调用OSSemPend()函数接收信号量时:

注意:μC/OS-III不允许在中断服务程序中等待信号量。
前面章节我们学习了互斥信号量,下面对计数型信号量与互斥信号量做一个对比。

1.2 任务间同步
在实际的应用中,常用信号量实现任务间的同步,OSSemPend()和OSSemPost()会出现在不同任务中,但不一定成对出现。

注意:在实际的应用中,还有多对多、一对多信号量操作的情况,但很不常见,建议不要设计出这样的操作方式,这样会带来很多的麻烦。
用来实现任务间同步的信号量在创建时赋给初始值,一般为0,表示事件还未发生,初始值在OSSemCreate()函数中指定。

让一个LED以0.5Hz的频率闪烁,每按键一次,LED闪烁一次。
我们通过此例来说明如何使用信号量实现任务间同步,两个任务处理流程如下。

TaskKEY任务主要代码如下。

TaskLED任务主要代码如下。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



