STM32设置中断优先级问题理解的对不对

2024-12-01 09:54:23
推荐回答(2个)
回答(1):

STM32通过4个BIT来对中断进行分组,比如你说的Group_1,就是用最高1位用于指定抢占式优先级,最低3位用于指定响应优先级。Group_2,就是用最高2位用于指定抢占式优先级,最低2位用于指定响应优先级。
当中断发生时MCU将先比较抢占式优先级,谁大谁先执行,如果一样着比较响应优先级。就这样来分辨中断优先级
-----------
NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority这两个参数和NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1)这个函数有什关系,有点不太明白!
这些函数手册上有说明,一般这样的库函数你照搬就OK了,要看透还真不容易

回答(2):

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
---这个函数来指定系统中断分组。现在是GROUP1,只有1位表明抢占优先级,另外3位表明响应优先级。换言之,这里抢占优先级只有2级,响应优先级只有8级。跟中断源多少无对应关系。
NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority 分别指定某中断源的强占优先级和响应优先级。
不能嵌套的前提是中断的抢先优先级一样。