(1)一个是父优先级,一个是子优先级
(2)所有的父优先级都比子优先级的优先级高
(3)STM32中用NVIC_PriorityGroupConfig库函数可以设置优先级分组,中断分组一般在BSP初始化时完成,程序往后执行过程中一般不会再更改。优先级分组有4种,具体看手册
NVIC_PriorityGroup_1
NVIC_PriorityGroup_2
NVIC_PriorityGroup_3
NVIC_PriorityGroup_4
比如:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组,抢断优先级和顺序优先级都配置成0~4
(4)在进行优先级比较时,先比较父优先级,再比较子优先级
比如一下2组配置:
(a) NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //父优先级=1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //子优先级=1
(b) NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级=2
由于(a)组中父优先级与(b)组中父优先级相同,所以接着比较子优先级,数字越低优先级越高,所以(a)组优先级配置比(b)组高
|