二进制信号量只有0和1,两个任务公用一个信号量,一个任务用于产生信号量(即对信号量+1),另一个任务使用此信号量(即对信号量-1)。
使用二进制信号量,需要创建一个二进制信号量,而任务通知就不需要创建。
任务通知只能用于指定的任务,如果有多个接收方,将无法替代二进制信号量。
比如有三个马达ABC,每次只运行1个马达,另外两个做备份,但要求三个马达使用频率得差不多,不能每次都使用A马达,此时如果用任务通知,就有三个接收方,每次都通知给A马达,BC永远不会运转到,将无法实现。 API:
xTaskNotifyGive();//命令含义,相当于上篇精简化的 xTaskNotify() + eIncrement。就是将Notifacation的值累加1

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


审核编辑:刘清
-
led灯
+关注
关注
22文章
1604浏览量
111123 -
二进制
+关注
关注
2文章
809浏览量
42799 -
按键控制器
+关注
关注
0文章
8浏览量
6501
原文标题:任务通知取代二进制信号量
文章出处:【微信号:硬件会,微信公众号:硬件会】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
如何在vivado上基于二进制码对指令运行状态进行判断
如何使用Keil将二进制文件加载到外部SPI Flash中?
74HC4520;74HCT4520同步二进制计数器规格书

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