[牛人杂谈] 除了CMSIS库函数,还有哪些方法可以配置PendSV中断的优先级?

[复制链接]
883|4
除了CMSIS库函数,还有哪些方法可以配置PendSV中断的优先级?
爱丽丝的梦 发表于 2025-9-23 14:49 | 显示全部楼层
除了 CMSIS 库函数,还可直接操作 NVIC 寄存器配置 PendSV 优先级。通过写 NVIC_IPR [14] 寄存器(PendSV 在 NVIC 中的位置为 14),高 4 位设定优先级,低 4 位无效。需注意优先级分组,确保数值符合分组规则,直接寄存器操作更底层,需准确计算地址和位域。
灰色与青 发表于 2025-10-5 16:09 | 显示全部楼层
除 CMSIS 库函数外,配置 PendSV 中断优先级的方法有:
直接操作 NVIC 优先级寄存器(如 NVIC_IPR [14],PendSV 对应偏移量),按位写入优先级值;
通过汇编指令直接访问寄存器,如 LDR/STR 操作修改优先级配置位;
部分 RTOS(如 FreeRTOS)提供封装好的 API(如 vTaskPrioritySet 间接关联),简化优先级设置。
这些方法需熟悉寄存器地址和位域定义,确保符合内核规范。
yiy 发表于 2025-10-9 13:44 | 显示全部楼层
你不说我还真不知道是用来干啥的
北海道没有冬天 发表于 2025-10-9 21:08 | 显示全部楼层
除 CMSIS 库函数外,可直接操作寄存器配置 PendSV 优先级:通过 SCB->SHP [10](SHPR3 寄存器)设置,该寄存器高 4 位为 PendSV 优先级域。按内核要求,优先级值需符合 8 位或 3 位编码规则,数值越小优先级越高。也可借助编译器内置宏或汇编指令直接访问寄存器,实现底层配置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

151

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部