資源描述:
《NVIC中斷優(yōu)先級(jí)管理.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、STM32NVIC中斷優(yōu)先級(jí)管理目錄NVIC中斷優(yōu)先級(jí)分組1NVIC中斷優(yōu)先級(jí)設(shè)置2NVIC總結(jié)3.NVIC中斷優(yōu)先級(jí)分組CM4內(nèi)核支持256個(gè)中斷,其中包含了16個(gè)內(nèi)核中斷和240個(gè)外部中斷,并且具有256級(jí)的可編程中斷設(shè)置。STM32F4并沒有使用CM4內(nèi)核的全部東西,而是只用了它的一部分。-STM32F40xx/STM32F41xx總共有92個(gè)中斷。-STM32F42xx/STM32F43xx則總共有96個(gè)中斷STM32F40xx/STM32F41xx的92個(gè)中斷里面,包括10個(gè)內(nèi)核中斷和82個(gè)可屏蔽中斷,具有16級(jí)可編程
2、的中斷優(yōu)先級(jí),而我們常用的就是這82個(gè)可屏蔽中斷。NVIC中斷優(yōu)先級(jí)分組……STM32F405xx/STM32F407XX向量表10個(gè)內(nèi)核中斷82個(gè)可屏蔽中斷幾十個(gè)中斷,怎么管理?NVIC中斷優(yōu)先級(jí)分組中斷管理方法:首先,對(duì)STM32中斷進(jìn)行分組,組0~4。同時(shí),對(duì)每個(gè)中斷設(shè)置一個(gè)搶占優(yōu)先級(jí)和一個(gè)響應(yīng)優(yōu)先級(jí)值。分組配置是在寄存器SCB->AIRCR中配置:組AIRCR[10:8]IPbit[7:4]分配情況分配結(jié)果01110:40位搶占優(yōu)先級(jí),4位響應(yīng)優(yōu)先級(jí)11101:31位搶占優(yōu)先級(jí),3位響應(yīng)優(yōu)先級(jí)21012:22位搶占優(yōu)先級(jí)
3、,2位響應(yīng)優(yōu)先級(jí)31003:13位搶占優(yōu)先級(jí),1位響應(yīng)優(yōu)先級(jí)40114:04位搶占優(yōu)先級(jí),0位響應(yīng)優(yōu)先級(jí)NVIC中斷優(yōu)先級(jí)分組搶占優(yōu)先級(jí)&響應(yīng)優(yōu)先級(jí)區(qū)別:高優(yōu)先級(jí)的搶占優(yōu)先級(jí)是可以打斷正在進(jìn)行的低搶占優(yōu)先級(jí)中斷的。搶占優(yōu)先級(jí)相同的中斷,高響應(yīng)優(yōu)先級(jí)不可以打斷低響應(yīng)優(yōu)先級(jí)的中斷。搶占優(yōu)先級(jí)相同的中斷,當(dāng)兩個(gè)中斷同時(shí)發(fā)生的情況下,哪個(gè)響應(yīng)優(yōu)先級(jí)高,哪個(gè)先執(zhí)行。如果兩個(gè)中斷的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)都是一樣的話,則看哪個(gè)中斷先發(fā)生就先執(zhí)行;1.NVIC中斷優(yōu)先級(jí)分組NVIC中斷優(yōu)先級(jí)分組舉例:假定設(shè)置中斷優(yōu)先級(jí)組為2,然后設(shè)置中斷3(R
4、TC中斷)的搶占優(yōu)先級(jí)為2,響應(yīng)優(yōu)先級(jí)為1。中斷6(外部中斷0)的搶占優(yōu)先級(jí)為3,響應(yīng)優(yōu)先級(jí)為0。中斷7(外部中斷1)的搶占優(yōu)先級(jí)為2,響應(yīng)優(yōu)先級(jí)為0。那么這3個(gè)中斷的優(yōu)先級(jí)順序?yàn)椋褐袛?>中斷3>中斷6。1.NVIC中斷優(yōu)先級(jí)分組NVIC中斷優(yōu)先級(jí)分組特別說明:一般情況下,系統(tǒng)代碼執(zhí)行過程中,只設(shè)置一次中斷優(yōu)先級(jí)分組,比如分組2,設(shè)置好分組之后一般不會(huì)再改變分組。隨意改變分組會(huì)導(dǎo)致中斷管理混亂,程序出現(xiàn)意想不到的執(zhí)行結(jié)果。1.NVIC中斷優(yōu)先級(jí)分組NVIC中斷優(yōu)先級(jí)分組中斷優(yōu)先級(jí)分組函數(shù):voidNVIC_PriorityGr
5、oupConfig(uint32_tNVIC_PriorityGroup);voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup){assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));SCB->AIRCR=AIRCR_VECTKEY_MASK
6、NVIC_PriorityGroup;}NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);1.NVIC中斷優(yōu)先級(jí)分組NVIC中
7、斷優(yōu)先級(jí)分組分組設(shè)置好之后,怎么設(shè)置單個(gè)中斷的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)?NVIC中斷優(yōu)先級(jí)分組中斷優(yōu)先級(jí)設(shè)置中斷設(shè)置相關(guān)寄存器__IOuint8_tIP[240];//中斷優(yōu)先級(jí)控制的寄存器組__IOuint32_tISER[8];//中斷使能寄存器組__IOuint32_tICER[8];//中斷失能寄存器組__IOuint32_tISPR[8];//中斷掛起寄存器組__IOuint32_tICPR[8];//中斷解掛寄存器組__IOuint32_tIABR[8];//中斷激活標(biāo)志位寄存器組MDK中NVIC寄存器結(jié)構(gòu)體typed
8、efstruct{__IOuint32_tISER[8];uint32_tRESERVED0[24];__IOuint32_tICER[8];uint32_tRSERVED1[24];__IOuint32_tISPR[8];uint32_tRESERVED2[24];__IOuint32_tICPR[8];uint32_tRESERVED3[24];__IOuint32_tIABR[8];uint32_tRESERVED4[56];__IOuint8_tIP[240];uint32_tRESERVED5[644];__Ouint
9、32_tSTIR;}NVIC_Type;中斷優(yōu)先級(jí)設(shè)置對(duì)于每個(gè)中斷怎么設(shè)置優(yōu)先級(jí)?中斷優(yōu)先級(jí)控制的寄存器組:IP[240]全稱是:InterruptPriorityRegisters240個(gè)8位寄存器,每個(gè)中斷使用一個(gè)寄存器來確定優(yōu)先級(jí)。STM32F40x系列一