信號量另一種通常的用法是用于任務間的同步機制。
二進制信號量,可以想成是一個布爾類型,只有0 和 1。
兩個任務公用一個信號量,一個任務用于產生信號量,另一個任務使用此信號量。
比如:按鍵按下亮燈,再按一次燈滅。按鍵任務中按鍵按下時,將信號量置1。
亮燈任務中將信號量置0。 用二進制信號量可以減少判斷語句的資源消耗。
API函數:
SemaphoreHandle_t xHandler; 創建二進制Handler xHandler = xSemaphoreCreateBinary(); 創建一個二進制信號量 返回NULL,或者handler xSemaphoreGive(xHandler); 生產者+1 xSemaphoreTake(xHanlder, timeout); 消費者-1 返回pdPASS, 或者pdFAIL 示例如下:
系統判斷,會占用CPU的很大資源,以上示例中判斷按鍵是否按下,可以用中斷處理。在中斷中必須調用函數名以FromISR結尾的函數。示例如下:
審核編輯:劉清
-
cpu
+關注
關注
68文章
11031瀏覽量
215957 -
FreeRTOS
+關注
關注
12文章
488瀏覽量
63728 -
API函數
+關注
關注
0文章
15瀏覽量
8209
原文標題:FreeRTOS二進制信號量
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論