xqueuesendtofrontfromisr()
該函式相當於任務中的xqueuesendtofront()的中斷呼叫安全版。
xqueuesendtobackfromisr()
該函式相當於任務中的xqueuesendtoback()的中斷呼叫安全版。
xqueuereceivefromisr()
該函式相當於任務中的xqueuereceive()的中斷呼叫安全版。
xqueuesendtofrontfromisr() 和xqueuesendtobackfromisr()的函式原型如下所示:
basetype_t xqueuesendtofrontfromisr
( queuehandle_t xqueue,
void
*pvitemtoqueue
basetype_t *pxhigherprioritytaskwoken
);
basetype_t xqueuesendtobackfromisr
( queuehandle_t xqueue,
void
*pvitemtoqueue
basetype_t *pxhigherprioritytaskwoken
);
引數:
xqueue:佇列的控制代碼
pvitemtoqueue:放入佇列的資料
pxhigherprioritytaskwoken:當將資料放入到佇列後使得某個高優先順序任務進入就緒態,則該值會被置為pdtrue,以便於決定是否呼叫任務排程。
返回值:pdpass:成功,errqueue_full:佇列已滿
雖然用佇列傳遞資料比較方便,例如uart接收的資料採用佇列方式傳遞出去,但是我們並不推薦這種方法,更好的方式是採用dma的方式,或直接將資料放入到乙個陣列中。直到檢測到空閒中斷。然後採用佇列方式將資料傳給任務會更高效。
當中斷優先順序與任務優先順序混合在一起時,中斷永遠會搶占任務。無論任務優先順序有多高。若系統支援中斷巢狀,則freertosconfig.h中至少定義(configmax_syscall_interrupt_priority或
configmax_api_call_interrupt_priority)和configkernel_interrupt_priority其中之一,或全有定義。
configmax_syscall_interrupt_priority 或 configmax_api_call_interrupt_priority:
設定了可以呼叫中斷安全介面函式的最高中斷優先順序。
configkernel_interrupt_priority:
設定心跳(tick interrupt即時間片中斷)中斷優先順序,必須設定為硬體中斷優先順序中最低的,這樣可以方便其他硬體中斷打斷它。如果系統沒有使用configmax_syscall_interrupt_priority,則所有呼叫了中斷安全介面函式的中斷優先順序均為configkernel_interrupt_priority。
數字優先順序:硬體中設定,設定為多少,則優先順序為多少。(configkernel_interrupt_priority即為數字優先順序)
邏輯優先順序:邏輯優先順序越高,中斷優先順序越高,中斷邏輯優先順序與數字優先順序相關,有的數字優先順序設定越高,則邏輯優先順序越高,有的則完全相反
關於中斷巢狀如下例所示:
處理器有七種不同中斷優先順序,數字越大,優先順序越高。configkernel_interrupt_priority設定為1,configmax_syscall_interrupt_priority設定為3,如圖:
如圖,只有優先順序低於或等於優先順序3的中斷可以呼叫中斷api介面函式。
FreeRTOS中斷管理
異常與中斷的基本概念 異常是導致處理器脫離正常執行轉向執行特殊 的任何事件,如果不及時進行處理,輕則系統出錯,重則會導致系統毀滅性癱瘓。所以正確地處理異常,避免錯誤的發生是提高軟體魯棒性 穩定性 非常重要的一環,對於實時系統更是如此。異常是指任何打斷處理器正常執行,並且迫使處理器進入乙個由有特權的特...
FreeRTOS中斷測試
configmax syscall interrupt priority 高於此優先順序的中斷,不能被禁止 ifdef nvic prio bits define configprio bits nvic prio bits else define configprio bits 4 endif d...
FreeRTOS 中斷管理
1.只有以 fromisr 或 from isr 結束的api函式或巨集才可以在中斷服務函式中使用。2.除互斥訊號量外,所有型別的訊號量都可以呼叫 xsemaphoretake 來獲取訊號量,但 xsemaphoretake 不能用在中斷服務函式中。3.計數訊號量的典型用法 事件計數 資源管理 4....