打印
[应用相关]

STM32F407的启动文件求解

[复制链接]
671|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者

使用特权

评论回复
5
xxmmi| | 2020-10-11 16:29 | 只看该作者
局部变量就是放在 栈里面的,你定义的局部变量大小把栈击穿了,你可以把那个局部变量数组变定义成全局变量,也可以吧栈的空间 Stack Size 改成64K 加 其他栈需要,那就定义成70K吧

使用特权

评论回复
6
huwr| | 2020-10-11 16:32 | 只看该作者

可以配置
外扩RAM吧

使用特权

评论回复
7
zhuhuis| | 2020-10-11 16:37 | 只看该作者
改成全局变量;

使用特权

评论回复
8
zwll| | 2020-10-11 16:44 | 只看该作者
全局变量,或者局部静态变量,这样编译器会提前分配好内存,不需要动态分配使用堆栈了

使用特权

评论回复
9
llljh| | 2020-10-11 16:51 | 只看该作者
局部变量分配在栈(STACK)上,你的2个变量占用16+64=80KByte的栈空间。

使用特权

评论回复
10
supernan| | 2020-10-11 16:57 | 只看该作者
F407有192KByte的SRAM,所以你可以把栈分的大些,因为还要考虑其它变量的占用

使用特权

评论回复
11
liuzaiy| | 2020-10-11 17:01 | 只看该作者
80KByte=0x14000Byte,故Stack_Size>0x14000。

使用特权

评论回复
12
chenjunt| | 2020-10-11 17:08 | 只看该作者
局部变量一般是加在stack了,5000那个可以改大地点,heap也可以大点,200也才512字节,有点小了

使用特权

评论回复
13
xxmmi| | 2020-10-11 17:11 | 只看该作者
可以用个数组来存放数据,而不用堆栈。

使用特权

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

使用特权

评论回复
15
happy_10| | 2020-10-11 17:19 | 只看该作者
局部变量,定义到64K,也是神了..这个东西,几十个字节以上的,都建议定全局或是静态变量.

使用特权

评论回复
16
wenfen|  楼主 | 2020-10-11 17:25 | 只看该作者
F407ram是190k的

使用特权

评论回复
17
tian111| | 2020-10-11 17:28 | 只看该作者
感觉是不是越界了导致的

使用特权

评论回复
18
chenho| | 2020-10-11 17:33 | 只看该作者
数组难道不是放在堆栈里面吗?

使用特权

评论回复
19
ousj| | 2020-10-11 17:36 | 只看该作者
根据自己的需要,一般在跑操作系统的时候需要修改

使用特权

评论回复
20
hanwe| | 2020-10-11 17:40 | 只看该作者
自己平时写裸机程序不需要修改堆栈

使用特权

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

本版积分规则

737

主题

8940

帖子

8

粉丝