STM32系列第6篇--NVIC中斷優(yōu)先級分組
STM32F103系列上面,又只有60個可屏蔽中斷(在107系列才有68個)
中斷管理方法:
首先,對STM32中斷進(jìn)行分組,組0~4。同時,對每個中斷設(shè)置一個搶占優(yōu)先級和一個響應(yīng)優(yōu)先級值。
分組配置是在寄存器SCB->AIRCR中配置:
高優(yōu)先級的搶占優(yōu)先級是可以打斷正在進(jìn)行的低搶占優(yōu)先級中斷的。
搶占優(yōu)先級相同的中斷,高響應(yīng)優(yōu)先級不可以打斷低響應(yīng)優(yōu)先級的中斷。
搶占優(yōu)先級相同的中斷,當(dāng)兩個中斷同時發(fā)生的情況下,哪個響應(yīng)優(yōu)先級高,哪個先執(zhí)行。
如果兩個中斷的搶占優(yōu)先級和響應(yīng)優(yōu)先級都是一樣的話,則看哪個中斷先發(fā)生就先執(zhí)行。
中斷設(shè)置相關(guān)寄存器
__IO uint8_t IP[240]; //中斷優(yōu)先級控制的寄存器組
__IO uint32_t ISER[8]; //中斷使能寄存器組
__IO uint32_t ICER[8]; //中斷失能寄存器組
__IO uint32_t ISPR[8]; //中斷掛起寄存器組
__IO uint32_t ICPR[8]; //中斷解掛寄存器組
__IO uint32_t IABR[8]; //中斷激活標(biāo)志位寄存器組
中斷優(yōu)先級設(shè)置步驟:
系統(tǒng)運(yùn)行后先設(shè)置中斷優(yōu)先級分組。在主函數(shù)調(diào)用函數(shù):
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
整個系統(tǒng)執(zhí)行過程中,只設(shè)置一次中斷分組。
針對每個中斷,設(shè)置對應(yīng)的搶占優(yōu)先級和響應(yīng)優(yōu)先級:
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
如果需要掛起/解掛,查看中斷當(dāng)前激活狀態(tài),分別調(diào)用相關(guān)函數(shù)即可