使用二进制信号量取代任务通知

电子说

1.3w人已加入

描述

二进制信号量只有0和1,两个任务公用一个信号量,一个任务用于产生信号量(即对信号量+1),另一个任务使用此信号量(即对信号量-1)。

使用二进制信号量,需要创建一个二进制信号量,而任务通知就不需要创建。

任务通知只能用于指定的任务,如果有多个接收方,将无法替代二进制信号量。

比如有三个马达ABC,每次只运行1个马达,另外两个做备份,但要求三个马达使用频率得差不多,不能每次都使用A马达,此时如果用任务通知,就有三个接收方,每次都通知给A马达,BC永远不会运转到,将无法实现。 API:

 xTaskNotifyGive();//命令含义,相当于上篇精简化的 xTaskNotify() + eIncrement。就是将Notifacation的值累加1

led灯


举例:

用按键控制LED灯亮灭。按键任务中当按下按键时,用xTaskNotifyGive()将Notifacation的值加1,另一个任务中用ulTaskNotifyTake等待Notifacation变为1后,执行完任务后再重置0.

led灯

led灯



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分