电子说
二进制信号量只有0和1,两个任务公用一个信号量,一个任务用于产生信号量(即对信号量+1),另一个任务使用此信号量(即对信号量-1)。
使用二进制信号量,需要创建一个二进制信号量,而任务通知就不需要创建。
任务通知只能用于指定的任务,如果有多个接收方,将无法替代二进制信号量。
比如有三个马达ABC,每次只运行1个马达,另外两个做备份,但要求三个马达使用频率得差不多,不能每次都使用A马达,此时如果用任务通知,就有三个接收方,每次都通知给A马达,BC永远不会运转到,将无法实现。 API:
xTaskNotifyGive();//命令含义,相当于上篇精简化的 xTaskNotify() + eIncrement。就是将Notifacation的值累加1
举例:
用按键控制LED灯亮灭。按键任务中当按下按键时,用xTaskNotifyGive()将Notifacation的值加1,另一个任务中用ulTaskNotifyTake等待Notifacation变为1后,执行完任务后再重置0.
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !