使用STM32F103vct6,使用了四个中断,TIM2,TIM3,外部中断.要求后三个中断执行时,TIM2可以抢占进入TIM2中断,即中断嵌套。而其它三个可以任意执行。以下中断优先级设置,是否正确???
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
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);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//选择优先级组别0
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//选择中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//0级抢占式优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//0级副优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能引脚作为中断源
NVIC_Init(&NVIC_InitStructure); //调用NVIC_Init固件库函数进行设置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//选择优先级组别1
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//选择中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//
NVIC_Init(&NVIC_InitStructure); //
}
|