NVIC->IP[20] = 0x60对应优先级3的原理及来源疑问
为什么
NVIC->IP[20] = 0x60对应优先级3? 核心原因:MSP432的NVIC优先级位规则
MSP432系列MCU的NVIC中断优先级寄存器(NVIC->IP[x])每个条目是8位,其中最高3位(位7、6、5)用于表示抢占优先级,剩余5位(位4-0)为子优先级(仅影响同抢占优先级中断的响应顺序,不影响抢占行为)。
0x60对应优先级3的计算过程
- 十六进制
0x60转换为二进制是01100000 - 提取最高3位(位7、6、5):
0 1 1 - 这三位组成的二进制数
011对应十进制的3,也就是注释里标注的中断优先级3。
你误解的地方
你提到“0x60转二进制为01100000对应第6、7位”,问题出在位的编号理解偏差:
- 寄存器的位编号通常从右往左计数(位0是最低位,位7是最高位),
01100000的最高三位是位7(0)、位6(1)、位5(1),三者的组合才是优先级数值,并非只看第6、7两位。 - 补充:MSP432的抢占优先级数值越小,优先级越高(0为最高优先级,7为最低)。
验证方式
查阅MSP432官方技术参考手册(TRM)的NVIC章节,找到Interrupt Priority Register (IP)的位定义,会明确标注位7-5为PRI[2:0](抢占优先级位),这三位的数值直接对应抢占优先级级别。
内容的提问来源于stack exchange,提问作者JorisTDP
相关产品推荐
相关产品推荐

