[应用相关]

关于STM32F407的启动文件求解

[复制链接]
1087|15
手机看帖
扫描二维码
随时随地手机跟帖
Mattheww|  楼主 | 2017-9-18 09:34 | 显示全部楼层 |阅读模式
请问启动文件这里面堆和栈的大小可以随便设置大小吗?他们是占用的SRAM的大小吗?我有一个函数局部变量占用了16K的数组做了个fft,做完就把我原始数据改乱了,还有一个函数局部变量有64K,进去就跑飞了,怎么更改可以解决这些问题呢?
164105tx61.png
feelhyq| | 2017-9-18 09:43 | 显示全部楼层
局部变量就是放在 栈里面的,你定义的局部变量大小把栈击穿了,你可以把那个局部变量数组变定义成全局变量,也可以吧栈的空间 Stack Size 改成64K 加 其他栈需要,那就定义成70K吧

使用特权

评论回复
feelhyq| | 2017-9-18 09:43 | 显示全部楼层

使用特权

评论回复
Erichk| | 2017-9-18 11:16 | 显示全部楼层
可以配置
外扩RAM吧

使用特权

评论回复
mmuuss586| | 2017-9-18 13:31 | 显示全部楼层
改成全局变量;

使用特权

评论回复
sonicll| | 2017-9-18 15:17 | 显示全部楼层
全局变量,或者局部静态变量,这样编译器会提前分配好内存,不需要动态分配使用堆栈了

使用特权

评论回复
迪卡| | 2017-9-18 20:47 | 显示全部楼层
局部变量分配在栈(STACK)上,你的2个变量占用16+64=80KByte的栈空间。

使用特权

评论回复
冰河w| | 2017-9-18 20:59 | 显示全部楼层
F407有192KByte的SRAM,所以你可以把栈分的大些,因为还要考虑其它变量的占用

使用特权

评论回复
Thorald| | 2017-9-18 21:40 | 显示全部楼层
80KByte=0x14000Byte,故Stack_Size>0x14000。

使用特权

评论回复
Bjorn| | 2017-9-18 21:53 | 显示全部楼层
局部变量一般是加在stack了,5000那个可以改大地点,heap也可以大点,200也才512字节,有点小了

使用特权

评论回复
Rollo| | 2017-9-18 22:13 | 显示全部楼层
可以用个数组来存放数据,而不用堆栈。

使用特权

评论回复
Rangar| | 2017-9-19 11:56 | 显示全部楼层
可以自己配置,但是你要懂该怎么配置,局部变量64k也是够大的了,看看手册sram有多大吧,有可能堆栈越界

使用特权

评论回复
wenunit| | 2017-9-19 12:09 | 显示全部楼层
局部变量,定义到64K,也是神了..这个东西,几十个字节以上的,都建议定全局或是静态变量.

使用特权

评论回复
Stannis| | 2017-9-19 15:59 | 显示全部楼层
F407ram是190k的

使用特权

评论回复
Brand2| | 2017-9-19 16:15 | 显示全部楼层
感觉是不是越界了导致的

使用特权

评论回复
Soraka| | 2017-9-19 16:32 | 显示全部楼层
数组难道不是放在堆栈里面吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

500

帖子

0

粉丝