Cursor编辑器智能插件bloodsugar-cursor:AI辅助编程降本增效实战
2026/5/15 3:04:29
这三个是ARM Cortex-M 系列处理器中的关键系统异常屏蔽寄存器,用于控制中断和异常的行为。下面分别解释:
0:允许所有中断(默认)。1:屏蔽所有可屏蔽中断(进入临界区)。__disable_irq()和__enable_irq()CMSIS函数操作。0:允许所有异常(默认)。1:屏蔽所有异常(仅NMI能响应)。0:关闭屏蔽功能(默认)。非0:屏蔽所有优先级值大于等于该数值的中断(数值越大,逻辑优先级越低)。BASEPRI = 0x20,则屏蔽优先级 ≥ 0x20(数字越大优先级越低)的中断。| 寄存器 | 屏蔽对象 | 是否屏蔽NMI/HardFault | 粒度 |
|---|---|---|---|
| PRIMASK | 所有可屏蔽中断 | 否 | 全有或全无 |
| FAULTMASK | 所有中断 + HardFault | 仅NMI可响应 | 全有或全无 |
| BASEPRI | 优先级低于等于某阈值的中断 | 否 | 优先级阈值 |
汇编指令:
CPSID I ; 置位PRIMASK(关中断) CPSIE I ; 清零PRIMASK(开中断) CPSID F ; 置位FAULTMASK CPSIE F ; 清零FAULTMASK MSR BASEPRI, r0 ; 设置BASEPRI MRS r0, BASEPRI ; 读取BASEPRICMSIS函数(C语言):
void__disable_irq(void);// 置位 PRIMASKvoid__enable_irq(void);// 清零 PRIMASKvoid__set_FAULTMASK(uint32_tvalue);uint32_t__get_FAULTMASK(void);void__set_BASEPRI(uint32_tvalue);uint32_t__get_BASEPRI(void);PRIMASK或BASEPRI保护短暂临界区。FAULTMASK避免嵌套异常。BASEPRI屏蔽低优先级中断。总结:这三个寄存器是 Cortex-M 异常/中断管理的关键,PRIMASK用于全局中断开关,FAULTMASK用于故障处理时的强屏蔽,BASEPRI提供基于优先级的精细中断控制。