在配置优先级的时候,要注意一个很重要的问题,中断种类的数量。
NVIC只可以配置 16 种 中断向量的优先级,也就是说,抢占优先级和响应优先 级的数量由一个 4 位的数字来决定,
把这个 4 位数字的 位 数 分配成抢占优先级 部分和响应优先级部分。有 5 组分配方式:
第 0 组: 所有 4 位用来配置抢占优先级,即 NVIC 配置的 24 =16 种 中断向量都是只有抢占属性,没有响应属性。
第 1 组:最高 1 位用来配置抢占优先级,低 3 位用来配置响应优先级。表 示有 21=2 种级别的抢占优先级(0 级,1 级),有 23=8 种响应优先级,即在 16 种中断向量之中,有 8 种中断,其抢占优先级都为 0 级,而它们的响应优先级 分别为 0~7,其余 8 种中断向量的抢占优先级则都为 1 级,响应优先级别分别 为 0~7。
第 2 组:2 位用来配置抢占优先级,2 位用来配置响应优先级。即 22=4 种 抢占优先级,22=4 种响应优先级。
第 3 组:高 3 位用来配置抢占优先级,最低 1 位用来配置响应优先级。即 有 8 种抢占优先级,2 种响应 2 优先级。
第 4 组:所有 4 位用来配置响应优先级。即 16种中断向量具有都不相同的 响应优先级。
要配置这些优先级组,可以采用库函数
NVIC_Priorit yGroupConfig () ,可输入的参数为NVIC_PriorityGroup_0 ~ NVIC_PriorityGroup_ 4。