ISR是嵌入式應(yīng)用系統(tǒng)獲取各種事件的基本手段。而事件是實(shí)時(shí)性問(wèn)題的討論基礎(chǔ)和事件計(jì)算的起點(diǎn)。
- 中斷優(yōu)先級(jí)
不同中斷服務(wù)程序應(yīng)有不同優(yōu)先級(jí),在允許中斷嵌套時(shí),最高優(yōu)先級(jí)的中斷總是能夠得到響應(yīng)。
只要沒(méi)關(guān)中斷,ISR可以中斷任何任務(wù)的運(yùn)行,比最高優(yōu)先級(jí)的任務(wù)還要高。
- Cortex-M3中斷資源
搶占優(yōu)先級(jí):實(shí)現(xiàn)中斷嵌套
子優(yōu)先級(jí):當(dāng)搶占優(yōu)先級(jí)相同的兩個(gè)中斷同時(shí)發(fā)生時(shí),子優(yōu)先級(jí)高的中斷可以首先獲得運(yùn)行權(quán)。
- 中斷優(yōu)先級(jí)安排原則
緊迫性:觸發(fā)中斷的事件允許耽誤的時(shí)間越短,優(yōu)先級(jí)越高。
關(guān)鍵性:觸發(fā)中斷的事件越關(guān)鍵,越高
頻繁性:觸發(fā)中斷的事件發(fā)生越頻繁,越高
快捷性:前三項(xiàng)相近,ISR處理越快,越高。
ISR功能應(yīng)盡量簡(jiǎn)單,只要將獲取的異步事件用通信手段發(fā)給關(guān)聯(lián)任務(wù)就行,后續(xù)處理由關(guān)聯(lián)任務(wù)完成。
1. 中斷服務(wù)程序設(shè)計(jì)
- ISR結(jié)構(gòu)
A:使os掌握當(dāng)前中斷的嵌套深度。
B:ISR功能代碼。必須調(diào)用系統(tǒng)通信服務(wù)函數(shù),與其他任務(wù)進(jìn)行通信。正是這種通信功能是關(guān)聯(lián)任務(wù)得到同步信號(hào)或數(shù)據(jù),從而進(jìn)入就緒狀態(tài)。不允許調(diào)用延時(shí)函數(shù)和可能被掛起的系統(tǒng)服務(wù)函數(shù)。
C:清除該中斷的相應(yīng)標(biāo)志。以便下次再次相應(yīng)。不用ISR函數(shù),中斷源的中斷相應(yīng)標(biāo)志不同,清除中斷標(biāo)志的代碼也不同。
D:調(diào)用退出中斷函數(shù)。實(shí)現(xiàn)任務(wù)調(diào)度功能。判斷是返回中斷(中斷嵌套)還是返回任務(wù)(原任務(wù)還是更高級(jí)任務(wù))
- 選擇與關(guān)聯(lián)任務(wù)的通信手段
兩種類(lèi)型:
A:信號(hào)型。ISR只完成發(fā)送信號(hào)量的工作。表示事件發(fā)生,通過(guò)信號(hào)量的同步功能出發(fā)關(guān)聯(lián)任務(wù),所有具體工作由任務(wù)完成。
B:數(shù)據(jù)型。ISR需要完成信息采集工作,然后使用消息郵箱(消息隊(duì)列)將數(shù)據(jù)發(fā)送給關(guān)聯(lián)任務(wù),由關(guān)聯(lián)任務(wù)完成后續(xù)數(shù)據(jù)處理工作。
細(xì)分如下:
A:觸發(fā)ISR事件不包含數(shù)據(jù)。用信號(hào)量與關(guān)聯(lián)任務(wù)通信。
B:觸發(fā)ISR事件包含數(shù)據(jù)低頻事件。用信號(hào)量與關(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ù)緩沖功能的消息隊(duì)列與關(guān)聯(lián)任務(wù)通信。
- 例子