打印
[应用相关]

关于STM32F407的启动文件求解

[复制链接]
1506|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请问启动文件这里面堆和栈的大小可以随便设置大小吗?他们是占用的SRAM的大小吗?我有一个函数局部变量占用了16K的数组做了个fft,做完就把我原始数据改乱了,还有一个函数局部变量有64K,进去就跑飞了,怎么更改可以解决这些问题呢?

164105tx61.png (25.98 KB )

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吧

使用特权

评论回复
5
mmuuss586| | 2017-9-18 13:31 | 只看该作者
改成全局变量;

使用特权

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

使用特权

评论回复
7
迪卡| | 2017-9-18 20:47 | 只看该作者
局部变量分配在栈(STACK)上,你的2个变量占用16+64=80KByte的栈空间。

使用特权

评论回复
8
冰河w| | 2017-9-18 20:59 | 只看该作者
F407有192KByte的SRAM,所以你可以把栈分的大些,因为还要考虑其它变量的占用

使用特权

评论回复
9
Thorald| | 2017-9-18 21:40 | 只看该作者
80KByte=0x14000Byte,故Stack_Size>0x14000。

使用特权

评论回复
10
Bjorn| | 2017-9-18 21:53 | 只看该作者
局部变量一般是加在stack了,5000那个可以改大地点,heap也可以大点,200也才512字节,有点小了

使用特权

评论回复
11
Rollo| | 2017-9-18 22:13 | 只看该作者
可以用个数组来存放数据,而不用堆栈。

使用特权

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

使用特权

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

使用特权

评论回复
14
Stannis| | 2017-9-19 15:59 | 只看该作者
F407ram是190k的

使用特权

评论回复
15
Brand2| | 2017-9-19 16:15 | 只看该作者
感觉是不是越界了导致的

使用特权

评论回复
16
Soraka| | 2017-9-19 16:32 | 只看该作者
数组难道不是放在堆栈里面吗?

使用特权

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

本版积分规则

85

主题

500

帖子

0

粉丝