信號量(semaphores)是20世紀60年代中期Edgser Dijkstra發明的。使用信號量的最初目的是為了給共享資源建立一個標誌,該標誌表示該共享資源被佔用情況。這樣,當一個任務在訪問共享資源之前,就可以先對這個標誌進行查詢,從而在瞭解資源被佔用的情況之後,再來決定自己的行為。
1,創建二值信號量
函數原型:vSemaphoreCreateBinary( xSemaphoreHandle xSemaphore );
參數說明:
2,發送(釋放)信號量
原型:xSemaphoreGive(SemaphoreHandle_t xSemaphore );
參數說明:
3,發送信號量,中斷保護
00001. 原型:
xSemaphoreGiveFromISR(SemaphoreHandle_t xSemaphore, signed BaseType_t *pxHigherPriorityTaskWoken )
參數說明:
4,獲取信號量
原型:xSemaphoreGive(SemaphoreHandle_t xSemaphore );
參數說明:
5,獲取信號量(中斷)
原型:
xSemaphoreGiveFromISR(SemaphoreHandle_t xSemaphore,
signed BaseType_t *pxHigherPriorityTaskWoken )
參數說明:
閱讀更多 智能硬件從業者 的文章