新手入门
- 积分
- 2
- 金钱
- 2
- 注册时间
- 2018-10-26
- 在线时间
- 0 小时
|
发表于 2018-10-26 16:59:08
|
显示全部楼层
本帖最后由 山道苍狼 于 2018-10-26 17:00 编辑
这个最近刚好看了,首先你的实验是正确的,按照理论来说的确会发生这样的情况。如果不使用MicroLIB的话,在单片机启动的时候首先会进入SystemInit将时钟初始化,之后进入__main(注意不是main,__main执行到最后才会进入main),它会将ZW段复制到0x8000000的地址位置,也就是Flash开始的位置,之后是C库函数初始化使用到的堆栈。排在后面的是你在启动文件中申请的堆和栈,堆在低地址,然后是栈排在高地址,向下增长。即便你不使用C标准库中的malloc,也会将堆空间申请出来,所以不使用的时候最好将栈设置为0。具体可以去看https://blog.csdn.net/qlexcel/article/details/78884379,这篇写的非常好 |
|