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