資源描述:
《STM32中斷嵌套方法.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、STM32中斷嵌套方法先說(shuō)明:所有中斷要放在同一個(gè)組里,因?yàn)橹挥薪M確定了,4位描述占先式優(yōu)先級(jí)和副優(yōu)先級(jí)的位數(shù)才可以確定.以上是總結(jié),下面是理解NVIC,來(lái)自WWW~~~~~STM32-----NVIC?(2012-05-1314:45:56)轉(zhuǎn)載▼NVIC——Nested?Vectored?Interrupt?Controller(嵌套中斷向量控制器)STM32有43個(gè)channel的settable的中斷源:AIRC(ApplicationInterruptandResetRegister)寄存器中有用
2、于指定優(yōu)先級(jí)的4bits。這4個(gè)bits用于分配pre-emption優(yōu)先級(jí)和sub優(yōu)先級(jí),在STM32的固件庫(kù)中定義如下://-------------------------------PreemptionPriorityGroup------------------------------------------------#define?NVIC_PriorityGroup_0?((u32)0x700)//0bitsforpre-emptionpriority4bitsforsubpriority#
3、define?NVIC_PriorityGroup_1?((u32)0x600)//1bitsforpre-emptionpriority3bitsforsubpriority#define?NVIC_PriorityGroup_2?((u32)0x500)//2bitsforpre-emptionpriority2bitsforsubpriority#define?NVIC_PriorityGroup_3?((u32)0x400)//3bitsforpre-emptionpriority1bitsfors
4、ubpriority#define?NVIC_PriorityGroup_4?((u32)0x300)//4bitsforpre-emptionpriority0bitsforsubpriority形象化的理解是:你是上帝,造了43個(gè)人,這么多人要分社會(huì)階級(jí)和社會(huì)階層了;因?yàn)椤半A級(jí)”的詞性比較重;“階層”比較中性,所以pre-emption優(yōu)先級(jí)->階級(jí);每個(gè)階級(jí)內(nèi)部,有一些階層,sub優(yōu)先級(jí)->階層;如果按照NVIC_PriorityGroup_4這么分,就分為了16個(gè)階級(jí)每個(gè)階級(jí)有0個(gè)階層;階級(jí)高的人,
5、可以打斷階級(jí)低的正在做事的人(嵌套),最多可以完成1個(gè)中斷和15級(jí)嵌套。每個(gè)階級(jí)你來(lái)指定這43人中,誰(shuí)進(jìn)入該階級(jí);一個(gè)人叫EXTI0_IRQChannel,你指定他進(jìn)入“階級(jí)8”,則NVIC_InitStructure.NVIC_IRQChannel?=EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=8;//指定搶占式優(yōu)先級(jí)別1,可取0-15在同一階級(jí)內(nèi)部,一個(gè)人在做事的時(shí)候,另外一個(gè)人不能打斷他;(pre-emp
6、tion優(yōu)先級(jí)別相同的中斷源之間沒(méi)有嵌套關(guān)系)。還有,如果他們兩個(gè)同時(shí)想做事,因?yàn)闆](méi)有階層,那么就根據(jù)Vectortable中的物理排序,讓排名靠前的人去做。又有1個(gè)人SPI1_IRQChannel,設(shè)定如下NVIC_InitStructure.NVIC_IRQChannel?=?SPI1_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=0;?//指定搶占式優(yōu)先級(jí)別1,可取0-15SPI1_IRQChannel的階級(jí)高,EXT
7、I0_IRQChannel做事的時(shí)候可以打斷(嵌套)。如果按照NVIC_PriorityGroup_3這么分,就分為了8個(gè)階級(jí)(1個(gè)階級(jí)是1個(gè)preemption優(yōu)先級(jí)),每個(gè)階級(jí)內(nèi)有2個(gè)階層(sub優(yōu)先級(jí));高階級(jí)的人,可以打斷低階級(jí)的正在做事的人(嵌套),最多可以完成1個(gè)中斷和7級(jí)嵌套。每個(gè)階級(jí)(每個(gè)preemption優(yōu)先級(jí)),你來(lái)指定這43人中,誰(shuí)進(jìn)入該階級(jí);一個(gè)人叫EXTI0_IRQChannel,你指定他進(jìn)入“階級(jí)3”,則:NVIC_InitStructure.NVIC_IRQChannel?=
8、EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=3;//?指定搶占式優(yōu)先級(jí)別1,可取0-7還需要指定他的階層:NVIC_InitStructure.NVIC_IRQChannelSubPriority?=0;//?指定響應(yīng)優(yōu)先級(jí)別0,可取0-1另有1個(gè)人叫EXTI9_5_IRQChannel,他的階級(jí)和階層設(shè)定如下NVI