一、NVIC是中斷向量表的統(tǒng)稱。因為stm32的中斷源非常多,在使用時有些中斷必須要具有較高的優(yōu)先級,那么nvic就誕生了,它就是用來配置中斷順序的。
二、打開misc.c文件,可以看到以下列表。
@arg NVIC_PriorityGroup_0: 0 bits for pre-emption priority
* 4 bits for subpriority
* @arg NVIC_PriorityGroup_1: 1 bits for pre-emption priority
* 3 bits for subpriority
* @arg NVIC_PriorityGroup_2: 2 bits for pre-emption priority
* 2 bits for subpriority
* @arg NVIC_PriorityGroup_3: 3 bits for pre-emption priority
* 1 bits for subpriority
* @arg NVIC_PriorityGroup_4: 4 bits for pre-emption priority
* 0 bits for subpriority
1、這個就是stm32根據自身的情況,把中斷向量優(yōu)先級分成了四組,每一組里可以設置搶占式優(yōu)先級和響應式優(yōu)先級。
三、基本配置。
1、選定中斷向量優(yōu)先級分組;
2、指定中斷源;
3、指定該中斷源的搶占式優(yōu)先級;
4、指定該中斷源的響應式優(yōu)先級;
5、開啟中斷。
四、程序示例
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig (NVIC_PriorityGroup_1);
NVIC_InitStructure .NVIC_IRQChannel =TIM2_IRQn ;
NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority =0;
NVIC_InitStructure .NVIC_IRQChannelSubPriority =0;
NVIC_InitStructure .NVIC_IRQChannelCmd =ENABLE ;
NVIC_Init(&NVIC_InitStructure );
}