freeRTOS中文實用教程3--中斷管理之中斷服務例程中使用隊列


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()的中斷安全
版本,專門用於中斷服務例程中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM