Cortex-M 中断的压栈与出栈操作
在 ARM Cortex-M 系列单片机中,中断的压栈(入栈)和出栈操作主要由硬件自动完成,但具体行为会根据使用场景和配置有所不同。以下是详细的说明:
1. 硬件自动压栈与出栈
当 Cortex-M 内核响应中断(异常)时,硬件会自动完成核心寄存器的保存和恢复,无需软件干预。这是 Cortex-M 架构的重要特性,能显著降低中断延迟并简化代码开发。
-
自动压栈的寄存器(硬件完成):
硬件会将以下寄存器按顺序压入当前栈(MSP 或 PSP):
PC
(程序计数器)、PSR
(程序状态寄存器)、R0-R3
、R12
、LR
(链接寄存器)。- 触发时机:中断发生时,硬件在第一个时钟周期内完成压栈。
- 栈指针选择:根据当前模式(Handler 模式或 Thread 模式),自动选择主栈指针(MSP)或进程栈指针(PSP)。
-
自动出栈的寄存器(中断返回时):
当中断服务程序(ISR&#