优先级的问题可以分为以下情况:
抢占优先级和响应优先级
(1)抢占优先级高的可以打断抢占优先级低的,形成嵌套.
(2)抢占优先级相同时,看响应优先级.如果两个中断前后发生的话,后来的中断不能打断前一个中断
只能等,如果两个中断同时发生的话,则响应优先级高的先响应.
(3)抢占级别和响应级别都一样时,按照中断的地址来响应,地址低的先响应
这样就解决了优先级的问题.
哪个级别高呢? 0>1>2>......
STM32共有5组分别是0-4组,还是借那个图
可以看到第4组所有的位都用来设置抢占式优先级了(占先式),所以它能嵌套15个中断,然后自身一个中断,一次类推
0组只有响应式优先级,所以它不能嵌套任何中断,也就是这个组别的中断不能打断任何的其他在运行的中断.
配置NIVC的例子
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //配置组别
/* Enable the EXTI9-5 Interrupt */
NVIC_Init