1.前言
消息隊列不僅可以用於事件通信,還可以用來傳遞數據
2.實例說明消息隊列的執行過程

3.主要API
API名稱 |
說明 |
參數 |
返回值 |
xQueueSendFromISR()完全等同於 xQueueSendToBackFromISR()
|
|
xQueue 目標隊列的句柄。這個句柄即是調用 xQueueCreate() 創建該隊列時的返回值。 pvItemToQueue 發送數據的指針。其指向將要復制到目標隊列中的數據 單元。由於在創建隊列時設置了隊列中數據單元的長度,所以會從該指針指向的空間復制對應長度的數據到隊列的 存儲區域。
pxHigherPriorityTaskWoken 對某個隊列而言,可能有不止一個任務處於阻塞態在等待其數據有效。調用 xQueueSendToFrontFromISR()或 xQueueSendToBackFromISR()會使得隊列數據變為有效,所以會讓其中一個等待任務切出阻塞態。如果調用這兩個 API 函數使得一個任務解除阻塞,並且這個任務的優先級高於當前任務(也就是被中斷的任務),那 么 API 會在函數內部將*pxHigherPriorityTaskWoken 設 為 pdTRUE。如果這兩個 API 函數將此值設為 pdTRUE,則在中斷退 出前應當進行一次上下文切換。這樣才能保證中斷直接 返回到就緒態任務中優先級最高的任務中。
|
1. pdPASS 返回 pdPASS 只會有一種情況, 那就是數據被成功發送 到隊列中。 2. errQUEUE_FULL 如 果 由 於 隊 列 已 滿 而 無 法 將 數 據 寫 入 , 則 將 返 回 errQUEUE_FULL
|
xQueueReceiveFromISR()
|
|
|
|
注:xQueueSendToFrontFromISR(), xQueueSendToBackFromISR()與 xQueueReceiveFromISR()
分別是 xQueueSendToFront(), xQueueSendToBack()與 xQueueReceive()的中斷安全
版本,專門用於中斷服務例程中