1. 程式人生 > >uC/OS 的中斷——uC/OS學習筆記(三)

uC/OS 的中斷——uC/OS學習筆記(三)

1.      常見名詞

a)        中斷服務子程式:應中斷請求而執行的程式

b)        中斷向量:中斷服務子程式的入口地址

2.      uC/OS的中斷過程

系統接收到中斷請求後,如果這時CPU處於中斷允許狀態,系統就會立刻終止正在執行的任務,而按照中斷向量的指向執行中斷服務子程式。

對於可剝奪型核心uC/OS而言,中斷服務子程式執行結束之後,系統將會根據情況進行一次任務排程去執行優先順序最高的就緒任務,而不一定接著執行被中斷的任務

3.中斷巢狀

uC/OS 2 系統允許中斷巢狀,即高優先級別的中斷源的中斷請求可以中斷低優先級別的中斷服務程式執行

為了記錄中斷巢狀的層數,uC/OS 2系統定義了一個全域性變數OSIntNesting

。通過呼叫函式OSIntEnter()來將這個全域性變數加1,從而用它來記錄中斷巢狀的層數。當中斷         服務程式完成後,呼叫OSIntExit()函式,來讓OSIntNesting置0

4.應用程式的臨界段(重要

a)實際上對於應用程式來說,比較重要的概念就是臨界段,中斷在uC/OS中到底如何運作只用看一下即可。

在uC/OS中,用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()這兩個巨集來封裝與系統硬體相關的關中斷和開中斷指令 。這兩個巨集需要在系統移植的時候自己實現

在STC 51微控制器上的實現程式碼:

#define  OS_ENTER_CRITICAL()  EA=0    //關中斷
#define  OS_EXIT_CRITICAL()   EA=1    //開中斷


b)不要在臨界段中呼叫uC/OS提供的功能函式。

5.主要參考書籍

a)        《嵌入式實時作業系統 uC/OS 2》

b)        《嵌入式實時作業系統 uC/OS 2 原理及應用》