Cortex-M3-STM32F1 开发:(二十二)HAL 库开发 ➤ STM32 中断逻辑优先级计算
| 上一篇 | 下一篇 |
|---|---|
| 使用 UART4 和电脑通信,并定义自己的帧协议,且不使用回调函数 |
STM32 中断逻辑优先级计算
在 STM32 中,一般会设置优先级分组,每个分组中会有抢占优先级和响应优先级,但是我们有时候需要知道其逻辑优先级是多少,所以我们现在来讲解如何通过抢占和响应优先级(十进制数)计算逻辑优先级。
计算公式如下:逻辑优先级 = (抢占优先级 << 响应优先级位数) + 响应优先级。
其中:
- 响应优先级位数 = 4 - 抢占优先级位数
- 由 NVIC 优先级分组 决定:
分组(如 NVIC_PriorityGroup_2) | 抢占位数 | 子优先级位数 |
|---|---|---|
| Group 0 | 0 | 4 |
| Group 1 | 1 | 3 |
| Group 2 | 2 | 2 |
| Group 3 | 3 | 1 |
| Group 4 | 4 | 0 |
示例:
(Group 2,抢占=2,响应=3)
逻辑优先级 = (2 << 2) + 3 = 8 + 3 = 11
// 2=0010, 则(2<<2)=1000, 又因3=0011, 则(2<<2)+3=1000+0011=1011, 十进制就是11
那么其逻辑优先级就是 11 。
