使用 Keil 的 µVision 以 C/C++ 代码访问 Cortex-M3 的 MSP 和 PSP 寄存器

Cap*_*edD 4 embedded cortex-m3

我需要访问 Cortex-M3 处理器的 MSP 和 PSP 寄存器(主和进程堆栈寄存器)。

我正在用 C/C++ 编写。

µVision 和相关的编译器不允许您为这个仅限 Thumb-2 的内核进行内联汇编(而且我不确定这是否是一个好主意)。

我需要这样做,以便我可以提取 svc 指令的立即值,而不管它是在线程模式还是处理程序模式下执行的。

谢谢,

Mic*_*urr 5

我目前无法访问 Keil 编译器来验证这一点,但根据文档,您应该能够使用编译器的“命名寄存器变量”功能:

register uint32_t msp __asm("msp");
register uint32_t psp __asm("psp");
Run Code Online (Sandbox Code Playgroud)