STM32的中断有两种属性,一个是抢占,另一个是响应。中断的编号越小,说明他的优先级越高。
抢占优先级:打断其他中断的优先级,即执行中断A的服务函数A过程中,被中断B打断,等中断B的服务函数执行完,再继续中断A的服务函数。
响应优先级:就是在相同的抢占优先级下,两个中断同时来,先处理响应优先级高的中断服务函数。
拿NVIC的寄存器来举例子
NVIC可以配置16个中断优先级,使用4位来控制
第0 组: 4 位都用来配置响应优先级。即16 种中断向量具有都不相同的响应优先级。
第1 组:最高1 位用来配置抢占优先级,低3 位用来配置响应优先级。
表示有2 种级别的抢占优先级(0 级,1 级),有8 种响应优先级,即在16 种中断向量之中,有8 种中断,其抢占优先级都为0 级,而它们的响应优先级分别为0~7,其余8 种中断向量的抢占优先级则都为1 级,响应优先级别分别为0~7。
第2 组:2 位用来配置抢占优先级,2 位用来配置响应优先级。即4 种抢占优先级,4 种响应优先级。
第3 组:高3 位用来配置抢占优先级,最低1 位用来配置响应优先级。即有8 种抢占优先级,2 种响应2 优先级。
第4组:所有4 位用来配置抢占优先级,即NVIC 配置的16 种中断向量都是只有抢占属性,没有响应属性