STM的优先级分组是根据什么来分的,如何确定是分第几组,例如
第0组:所有4位用于指定响应优先级 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级 第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级 第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级 第4组:所有4位用于指定抢占式优先级
分组又是如何影响中断抢占以及嵌套中断~~~
本人按照以下程序设置,但并没有发生嵌套中断,反而中断服务函数结束之后,函数退不回主函数(主函数为死循环,以LED显示作实验)
// 选择使用优先级分组第1组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // 使能EXTI0中断 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
// 使能EXTI9_5中断 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
中断组设置为0,函数可以退回主函数但不可以嵌套中断,但设置1—4,可以嵌套中断,
但不可以回去主函数,
即中断函数执行完后,便卡在那个执行完的状态
各位高手,请帮帮忙哦~~~
|