STM32入門學習筆記之Interrupts and events
一、Nested vectored interrupt controller (NVIC巢狀向量中斷控制器)
用於為中斷分組,從而分配搶佔優先順序和響應優先順序
根據STM32的中斷數量,分成5組
1、NVIC_PriorotyGroupConfig函式
Void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
設定優先順序分組:先佔優先順序和從優先順序
NVIC_PriorityGroup_0 先佔優先順序0位,從優先順序4位
NVIC_PriorityGroup_1 先佔優先順序1位,從優先順序3位
NVIC_PriorityGroup_2 先佔優先順序2位,從優先順序2位
NVIC_PriorityGroup_3 先佔優先順序3位,從優先順序1位
NVIC_PriorityGroup_4 先佔優先順序4位,從優先順序0位
2、NVIC_Init()函式
Void NVIC(NVIC_InitTypeDef *NVIC_InitStruct)
根據NVIC_InitStruct中指定的引數初始化外設NVIC暫存器
引數NVIC_InitStruct:指向結構NVIC_InitTypeDef的指標,包含了中斷的資訊
NVIC_IRQChannel:中斷源
NVIC_IRQChannelPreemptionPriority:搶佔優先順序
NVIC_IRQChannelSubPriority:響應優先順序
NVIC_IRQChannelCmd:中斷使能
例如:
NVIC_InitTypeDef NVIC_InitStructure;
//設定優先順序分組
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
//選擇外部中斷線0中斷
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
//使能該通道
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);