二進制信號量只有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文章
1595瀏覽量
109400 -
二進制
+關注
關注
2文章
804瀏覽量
42174 -
按鍵控制器
+關注
關注
0文章
8瀏覽量
6467
原文標題:任務通知取代二進制信號量
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論