FreeRTOS 中斷管理
在本實體中,將演示中斷管理如何與 FreeRTOS 配合使用, 換句話說,將學習使用 FreeRTOS 內核管理中斷, 在實時作業系統中,每個應用程式由幾個任務組成, 這些任務本質上可以是周期性的、非周期性的和零星的, 但是沿著這些,一些任務只在發生中斷時執行, 例如,我們有一個非周期性任務,該任務僅在用戶按下與 Arduino 的數字 I/O 引腳相連的按鈕時才執行, 最重要的是,我們在這個數字 I/O 引腳上附加了一個中斷, 這意味著每當用戶按下按鈕時,Arduino 就會開始執行中斷服務程式,
1、中斷管理介紹
在使用 RTOS 時,處理中斷服務程式非常關鍵, 因為濫用中斷會導致時間限制問題,例如其他周期性任務無法按時完成,
注意:中斷比其他任務具有更高的優先級, 因此,它中斷不應等待互斥體、信號量和其他資源,而應在發生時立即執行, 否則,可能會導致問題, 通過其他任務延遲處理中斷是一種可能的對策,以盡可能縮短 ISR 的處理時間, 總之,中斷服務程式的代碼和執行時間要盡可能的少,
1)使用中斷讀取和寫入佇列
FreeRTOS 中斷提供了佇列 API 的中斷安全版本,以使用 ISR 從佇列中讀取和寫入資料, 這是兩個 API 函式:
- xQueueSendToBackFromISR() :用于從中斷服務例程將資料寫入佇列, 它的作業原理類似于 xQueueSendToBack() API,具有相同的輸入引數和回傳值功能,
- xQueueReceiveFromISR():用于從中斷服務例程中讀取佇列中的資料, 它的作業原理類似于 xQueueRece
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/401464.html
標籤:其他
上一篇:關于MIPI的D-PHY硬體總結
