(三) STM32 外部中断的原理与应用( 二 )

(1)如果两个中断同时到达 , 则中断控制器会先处理响应优先级高的中断 。
(2)当一个中断到来后 , 如果正在处理另一个中断 , 则这个后到的中断就要等到前一个中断处理完之后才能被处理(高响应优先级的中断不可以打断低响应优先级的中断) 。
(3)如果它们的抢占式优先级和响应优先级都相等 , 则根据它们在中断表中的排位顺序决定先处理哪一个 。
举个例子 , 现在有3个中断向量 , 如下图 , 若内核正在执行C的中断服务函数 , 则它能被抢占优先级更高的中断A打断 , 由于B和C的抢占优先级相同 , 所以C不能被B打断 。 但如果B和C中断是同时到达的 , 内核就会首先执行响应优先级别更高的B中断 。 如果B和C中有一个先到 , 不管谁的响应优先级高 , 都不能打断 , 只能等待 。

2、NVIC的优先级组

STM32使用了4个中断优先级的寄存器位 , 只可以配置16种优先级 , 即抢占优先级和响应优先级的数量由一个4位的数字来决定 , 把这个4位数字的位数分配成抢占优先级部分和响应优先级部分 。 有以下5种分配方式:
第0种:所有4位用于指定响应优先级 , 即NVIC配置的2的4次方共16种中断向量都是只有响应属性 , 没有抢占属性 。

推荐阅读