[应用相关] STM32F407的启动文件求解

[复制链接]
 楼主| wenfen 发表于 2020-10-11 16:11 | 显示全部楼层 |阅读模式
请问启动文件这里面堆和栈的大小可以随便设置大小吗?
houcs 发表于 2020-10-11 16:16 | 显示全部楼层
他们是占用的SRAM的大小吗?
 楼主| wenfen 发表于 2020-10-11 16:20 | 显示全部楼层
我有一个函数局部变量占用了16K的数组做了个fft,做完就把我原始数据改乱了,还有一个函数局部变量有64K,进去就跑飞了,怎么更改可以解决这些问题呢?
 楼主| wenfen 发表于 2020-10-11 16:24 | 显示全部楼层
xxmmi 发表于 2020-10-11 16:29 | 显示全部楼层
局部变量就是放在 栈里面的,你定义的局部变量大小把栈击穿了,你可以把那个局部变量数组变定义成全局变量,也可以吧栈的空间 Stack Size 改成64K 加 其他栈需要,那就定义成70K吧
huwr 发表于 2020-10-11 16:32 | 显示全部楼层

可以配置
外扩RAM吧
zhuhuis 发表于 2020-10-11 16:37 | 显示全部楼层
改成全局变量;
zwll 发表于 2020-10-11 16:44 | 显示全部楼层
全局变量,或者局部静态变量,这样编译器会提前分配好内存,不需要动态分配使用堆栈了
llljh 发表于 2020-10-11 16:51 | 显示全部楼层
局部变量分配在栈(STACK)上,你的2个变量占用16+64=80KByte的栈空间。
supernan 发表于 2020-10-11 16:57 | 显示全部楼层
F407有192KByte的SRAM,所以你可以把栈分的大些,因为还要考虑其它变量的占用
liuzaiy 发表于 2020-10-11 17:01 | 显示全部楼层
80KByte=0x14000Byte,故Stack_Size>0x14000。
chenjunt 发表于 2020-10-11 17:08 | 显示全部楼层
局部变量一般是加在stack了,5000那个可以改大地点,heap也可以大点,200也才512字节,有点小了
xxmmi 发表于 2020-10-11 17:11 | 显示全部楼层
可以用个数组来存放数据,而不用堆栈。
huwr 发表于 2020-10-11 17:15 | 显示全部楼层
可以自己配置,但是你要懂该怎么配置,局部变量64k也是够大的了,看看手册sram有多大吧,有可能堆栈越界
happy_10 发表于 2020-10-11 17:19 | 显示全部楼层
局部变量,定义到64K,也是神了..这个东西,几十个字节以上的,都建议定全局或是静态变量.
 楼主| wenfen 发表于 2020-10-11 17:25 | 显示全部楼层
F407ram是190k的
tian111 发表于 2020-10-11 17:28 | 显示全部楼层
感觉是不是越界了导致的
chenho 发表于 2020-10-11 17:33 | 显示全部楼层
数组难道不是放在堆栈里面吗?
ousj 发表于 2020-10-11 17:36 | 显示全部楼层
根据自己的需要,一般在跑操作系统的时候需要修改
hanwe 发表于 2020-10-11 17:40 | 显示全部楼层
自己平时写裸机程序不需要修改堆栈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部