NVIC_IRQChannelPreemptionPriority、NVIC_IRQChannelSubPriority

STM32有43個(gè)channel的settable的中斷源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定優(yōu)先級(jí)的4位。這4個(gè)bits用于分配pre-emption優(yōu)先級(jí)和sub優(yōu)先級(jí)。

前者為搶占優(yōu)先級(jí) 后者為響應(yīng)優(yōu)先級(jí),也稱為副優(yōu)先級(jí)。

具有高搶占式優(yōu)先級(jí)的中斷可以在具有低搶占式優(yōu)先級(jí)的中斷處理過(guò)程中被響應(yīng),即中斷嵌套,或者說(shuō)高搶占式優(yōu)先級(jí)的中斷可以嵌套在低搶占式優(yōu)先級(jí)的中斷中。當(dāng)兩個(gè)中斷源的搶占式優(yōu)先級(jí)相同時(shí),這兩個(gè)中斷將沒(méi)有嵌套關(guān)系,當(dāng)一個(gè)中斷到來(lái)后,如果正在處理另一個(gè)中斷,這個(gè)后到來(lái)的中斷就要等到前一個(gè)中斷處理完之后才能被處理。如果這兩個(gè)中斷同時(shí)到達(dá),則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級(jí)高低來(lái)決定先處理哪一個(gè);如果他們的搶占式優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)都相等,則根據(jù)他們?cè)谥袛啾碇械呐盼豁樞驔Q定先處理哪一個(gè)。

? 看了上面的介紹后,相信大家都明白了這里面的關(guān)系了,總結(jié)下便是:搶占式優(yōu)先級(jí)>響應(yīng)優(yōu)先級(jí)>中斷表中的排位順序(其中“>”理解為比較的方向)。


高搶占式優(yōu)先級(jí)的中斷可以打斷低搶占式優(yōu)先級(jí)的中斷。 但是,搶占式優(yōu)先級(jí)相同時(shí),后來(lái)的中斷只能在前一個(gè)中斷處理完成后才被處理,不能打斷。如果兩個(gè)同時(shí)來(lái)臨,先處理高響應(yīng)優(yōu)先級(jí)的中斷。如果兩個(gè)優(yōu)先級(jí)都相同,則按中斷向量表順序決定先處理那一個(gè)。

也就是搶占式優(yōu)先級(jí)>響應(yīng)優(yōu)先級(jí)>中斷表中的排位順序(其中“>”理解為比較的方向)。

在STM32的固件庫(kù)中定義如下:

//-------------------------------Preemption Priority Group ------------------------------------------------

#define?NVIC_PriorityGroup_0?((u32)0x700) //0 bits for pre-emption priority 4 bits for subpriority

#define?NVIC_PriorityGroup_1?((u32)0x600) //1 bits for pre-emption priority 3 bits for subpriority

#define?NVIC_PriorityGroup_2?((u32)0x500) //2 bits for pre-emption priority 2 bits for subpriority

#define?NVIC_PriorityGroup_3?((u32)0x400) // 3 bits for pre-emption priority 1 bits for subpriority

#define?NVIC_PriorityGroup_4?((u32)0x300) //4 bits for pre-emption priority 0 bits for subpriority

NVIC_PriorityGroup_0?代表 4BIT位都是響應(yīng)優(yōu)先級(jí),共16個(gè),無(wú)搶占優(yōu)先級(jí),所有中斷不能被打斷,同時(shí)來(lái)臨時(shí)最高相應(yīng)優(yōu)先級(jí)先處理。即NVIC_IRQChannelPreemptionPriority無(wú)效,NVIC_IRQChannelSubPriority可以賦值為0~15.

NVIC_PriorityGroup_1? 代表有兩位搶占優(yōu)先級(jí),8個(gè)響應(yīng)優(yōu)先級(jí),搶占優(yōu)先級(jí)能夠打斷響應(yīng)優(yōu)先級(jí)。即NVIC_IRQChannelPreemptionPriority可以為0或1,NVIC_IRQChannelSubPriority可以賦值為0~7

NVIC_PriorityGroup_2 ?代表有4個(gè)搶占優(yōu)先級(jí),4個(gè)響應(yīng)優(yōu)先級(jí)。即NVIC_IRQChannelPreemptionPriority可以為0~3,NVIC_IRQChannelSubPriority可以賦值為0~3

NVIC_PriorityGroup_3? 代表有8個(gè)搶占優(yōu)先級(jí)和2個(gè)響應(yīng)優(yōu)先級(jí)。即NVIC_IRQChannelPreemptionPriority可以為0~7,NVIC_IRQChannelSubPriority可以賦值為0或1

NVIC_PriorityGroup_4? 有16個(gè)搶占優(yōu)先級(jí),無(wú)響應(yīng)優(yōu)先級(jí),高搶占優(yōu)先級(jí)可以打斷低搶占優(yōu)先級(jí)。即NVIC_IRQChannelPreemptionPriority可以為0~15,NVIC_IRQChannelSubPriority無(wú)效。


原文鏈接:https://blog.csdn.net/yyyljw/article/details/50539520

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容