專注電子技術(shù)學(xué)習(xí)與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

Cortex-M3中斷服務(wù)程序設(shè)計

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年08月19日   【字體:

ISR是嵌入式應(yīng)用系統(tǒng)獲取各種事件的基本手段。而事件是實時性問題的討論基礎(chǔ)和事件計算的起點。

  • 中斷優(yōu)先級

不同中斷服務(wù)程序應(yīng)有不同優(yōu)先級,在允許中斷嵌套時,最高優(yōu)先級的中斷總是能夠得到響應(yīng)。

只要沒關(guān)中斷,ISR可以中斷任何任務(wù)的運行,比最高優(yōu)先級的任務(wù)還要高。

  • Cortex-M3中斷資源

搶占優(yōu)先級:實現(xiàn)中斷嵌套

子優(yōu)先級:當搶占優(yōu)先級相同的兩個中斷同時發(fā)生時,子優(yōu)先級高的中斷可以首先獲得運行權(quán)。

  • 中斷優(yōu)先級安排原則

緊迫性:觸發(fā)中斷的事件允許耽誤的時間越短,優(yōu)先級越高。

關(guān)鍵性:觸發(fā)中斷的事件越關(guān)鍵,越高

頻繁性:觸發(fā)中斷的事件發(fā)生越頻繁,越高

快捷性:前三項相近,ISR處理越快,越高。

ISR功能應(yīng)盡量簡單,只要將獲取的異步事件用通信手段發(fā)給關(guān)聯(lián)任務(wù)就行,后續(xù)處理由關(guān)聯(lián)任務(wù)完成。

 

1. 中斷服務(wù)程序設(shè)計

  • ISR結(jié)構(gòu)



4部分

A:使os掌握當前中斷的嵌套深度。

B:ISR功能代碼。必須調(diào)用系統(tǒng)通信服務(wù)函數(shù),與其他任務(wù)進行通信。正是這種通信功能是關(guān)聯(lián)任務(wù)得到同步信號或數(shù)據(jù),從而進入就緒狀態(tài)。不允許調(diào)用延時函數(shù)和可能被掛起的系統(tǒng)服務(wù)函數(shù)。

C:清除該中斷的相應(yīng)標志。以便下次再次相應(yīng)。不用ISR函數(shù),中斷源的中斷相應(yīng)標志不同,清除中斷標志的代碼也不同。

D:調(diào)用退出中斷函數(shù)。實現(xiàn)任務(wù)調(diào)度功能。判斷是返回中斷(中斷嵌套)還是返回任務(wù)(原任務(wù)還是更高級任務(wù))

  • 選擇與關(guān)聯(lián)任務(wù)的通信手段

兩種類型:

A:信號型。ISR只完成發(fā)送信號量的工作。表示事件發(fā)生,通過信號量的同步功能出發(fā)關(guān)聯(lián)任務(wù),所有具體工作由任務(wù)完成。

B:數(shù)據(jù)型。ISR需要完成信息采集工作,然后使用消息郵箱(消息隊列)將數(shù)據(jù)發(fā)送給關(guān)聯(lián)任務(wù),由關(guān)聯(lián)任務(wù)完成后續(xù)數(shù)據(jù)處理工作。

 

細分如下:

A:觸發(fā)ISR事件不包含數(shù)據(jù)。用信號量與關(guān)聯(lián)任務(wù)通信。

B:觸發(fā)ISR事件包含數(shù)據(jù)低頻事件。用信號量與關(guān)聯(lián)任務(wù)通信。采集任務(wù)放在關(guān)聯(lián)任務(wù)中。

C:觸發(fā)ISR事件包含數(shù)據(jù)中高頻事件。ISR采集數(shù)據(jù)。ISR中使用消息郵箱與關(guān)聯(lián)任務(wù)通信。關(guān)聯(lián)任務(wù)完成后續(xù)工作。

D:觸發(fā)ISR事件包含數(shù)據(jù)非周期高頻事件。ISR采集數(shù)據(jù),ISR中使用具有數(shù)據(jù)緩沖功能的消息隊列與關(guān)聯(lián)任務(wù)通信。

 

  • 例子



關(guān)閉窗口