OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5781|回复: 3

原子大哥:STM32F407ZGT6 堆该如何理解啊,恳请大神指教

[复制链接]

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2015-10-30 15:49:44 | 显示全部楼层 |阅读模式
5金钱
问题1>单片机的堆和栈的地址是跟RAM共地址的吗?是在0x20000000~0x2002000之间吗?
问题2>堆的起始地址是多少啊?栈的起始地址呢?
问题3>栈的大小根据如下起始文件中定义的吗?怎么就这么小


问题4>为什么我进入debug界面,发现堆的起始地址是0x20000758(MSP的地址)

最佳答案

查看完整内容[请看2#楼]

1、堆和栈就是RAM,所以肯定在0x20000000~0x2002000之间 2、堆和栈的起始地址见生成的map文件,下图中详细的列出了堆和栈的地址和大小, 3、堆和栈的大小就是就是启动文件里面定义的,Stack_Size和Heap_Size分别为栈和堆的大小,嫌小?那你改大啊!不是所以的程序都需要那么大的堆栈,正如一个人就只能吃两碗饭,你给他一吨饭也没事,关键是有意义吗?他能吃得下吗? 4、至于起始位置,看2里面的图,并不是说堆栈的内存就必 ...
电子爱好者
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-10-30 15:49:45 | 显示全部楼层
1、堆和栈就是RAM,所以肯定在0x20000000~0x2002000之间
2、堆和栈的起始地址见生成的map文件,下图中详细的列出了堆和栈的地址和大小,


3、堆和栈的大小就是就是启动文件里面定义的,Stack_Size和Heap_Size分别为栈和堆的大小,嫌小?那你改大啊!不是所以的程序都需要那么大的堆栈,正如一个人就只能吃两碗饭,你给他一吨饭也没事,关键是有意义吗?他能吃得下吗?
4、至于起始位置,看2里面的图,并不是说堆栈的内存就必须得从0X20000000开始。
开往春天的手扶拖拉机
回复

使用道具 举报

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2015-10-30 15:58:25 | 显示全部楼层
编译器默认分配在低地址区,也可自行设置,具体地址见输出的MAP文件。
对于MCU,256的深度通常是够了,偶见非常规用法耗尽溢出。
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
 楼主| 发表于 2015-11-1 20:52:23 | 显示全部楼层
回复【3楼】zuozhongkai:
---------------------------------
大神指导,小弟拜读了~~~
电子爱好者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 12:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表