
STM32堆栈问题
R0,R1,R2,R3为通用寄存器,这段汇编程序里面是如何设置堆栈的各自空间和顶部指针?堆栈指针不是R13(SP)么?那么在后面对这几个寄存器进行读写会不会改变堆栈信息?...
R0,R1,R2,R3为通用寄存器,这段汇编程序里面是如何设置堆栈的各自空间和顶部指针?堆栈指针不是R13(SP)么?那么在后面对这几个寄存器进行读写会不会改变堆栈信息?
我就是没有搞懂R0~R3里面的地址是如何映射到MSP,PSP里面去的? 展开
我就是没有搞懂R0~R3里面的地址是如何映射到MSP,PSP里面去的? 展开
1个回答
展开全部
CortexM内核向量表0地址为MSP(即栈顶指针SP)的初值。复位后会自动装入SP
追问
为什么会是R0~R3这4个通用寄存器来传递呢?手册上面我没有看到向量表0(或者堆和桟的相关控制寄存器)和这几个寄存器的对应关系,换成其它寄存器是不是一样呢?麻烦大侠您帮我看看呢?本人菜鸟一枚
追答
AAPCS规定,当函数型参小于4个的时候用r0~r3传递,如果大于用堆栈传递。这个是规定。
事实上上面的代码是IDE行为,如果自己做BSP可以不用。注意以下几点就好
1. 把MSP即堆栈首地址存入0地址。开机后硬件会自动加载
2. 将rodata段搬运到rwdata段,即给全局变量赋值
3. 清0bss段

2023-06-12 广告
STM32F207是一款非常优秀的微控制器芯片,它是ST(意法半导体)最新推出的基于90纳米工艺的STM32F2系列芯片之一。STM32F207芯片内置了丰富的外设接口,包括ADC、DAC、UART、SPI、I2C等,可以轻松实现各种复杂的...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询