arm - 从 Cortex M3 处理器的用户程序进入中断处理程序时使用哪个堆栈?

标签 arm stack embedded microcontroller cortex-m3

Cortex M3处理器有两个堆栈指针:PSP、MSP。 在一些复杂的应用中,用户程序使用PSP指向用户程序栈。异常处理程序使用指向主堆栈的 MSP。

问题是: 用户程序运行时发生中断。在进入中断处理程序之前,R0-R3、R12、LR、PC 和 xPSR 寄存器将被压入堆栈。但是哪个堆栈用于存储这些寄存器?

最佳答案

根据我对 ARM 文档(Cortex-M3 设备通用用户指南)的阅读,异常进入时的寄存器堆栈发生在当前 堆栈上,然后处理器进入处理程序模式。如果您仔细想想,这是普通情况下最方便的行为。

关于arm - 从 Cortex M3 处理器的用户程序进入中断处理程序时使用哪个堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461739/

相关文章:

ruby-on-rails - 首次 bundle 安装,堆栈级别太深

c - 堆栈旁边的线程有什么用

c - 通过 UART 为简单的 Z80 系统设计引导加载程序,在哪里加载程序

c++ - 在 x86 程序集中更改数组的值(嵌入在 C++ 中)

python - 将 Python 移植到嵌入式系统

arm - 使用 Eclipse CDT 和 IAR 插件进行 headless 构建

ios - 为 iOS 交叉编译 libogg

linux - 如何在不调用外部工具(如 gdb)的情况下从 C 中的核心转储文件生成堆栈跟踪

c - 在 Keil uVision 中使用 STM32F429 探索板的 IIR 低通滤波器

c - 向现有固件添加代码