当前位置: 代码迷 >> 综合 >> fans-rt 任务调度-堆栈切换篇(3)关于cortex-m3堆栈的入栈顺序说明
  详细解决方案

fans-rt 任务调度-堆栈切换篇(3)关于cortex-m3堆栈的入栈顺序说明

热度:53   发布时间:2024-01-20 12:14:20.0

cortex-m3 STM32 MCU支持单条PUSH/POP指令对多个寄存器执行入栈出栈操作,入栈顺序按照寄存器编号的反序进行入栈,不以用户的编码顺序进行入栈(因为操作码以mask值运算),例如:


PUSH {R0-R3}
PUSH {R1, R0, R2, R3}
PUSH {R3, R1, R2, R0}
PUSH {R3, R1-R0}
四种写法的执行结果是完全一致的,指令执行后,堆栈镜像如下:

0x20000000:    R0
0x20000004:    R1
0x20000008:    R2
0x2000000C:    R3
在编写fans-rt的中断入口函数时应特别加以注意。



  相关解决方案