打印
[STM32F4]

STM32F4P6,程序编译出现下面错误

[复制链接]
308|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bqyj|  楼主 | 2022-4-17 23:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

使用特权

评论回复
沙发
dengdc| | 2022-4-17 23:42 | 只看该作者
清理一下工程重新编译试试。

使用特权

评论回复
板凳
wyjie| | 2022-4-17 23:43 | 只看该作者
分析:

这个出现的原因是因为芯片RAM空间不足,无法执行程序。通常RAM的空间会比较小,ROM空间相对较大。



解决办法:

两个思路,一个是扩大RAM,二是减少需要存在RAM里的内容:

1. 尝试修改”Target Options“中右侧RAM的Size,但这个要先查看芯片文档,找到文档中描述的RAM大小,把Size调成最大值。

但是我的这个工程还是不行,看来是预存的数据量太大了。



2. 如果第一种方法还是不行,那就只能尝试把一些数据类的变量定义为静态,这样就可以利用ROM的存储空间了。找到工程中存储数据的部分,发现是大量的float数组。这种情况会占用大量的空间,所以要在float声明的前面加一个”const“,转换为静态变量。

这样我的就可以通过了,成功生成了hex文件。



3. 如果第二种方法还是不行,那就只能修改代码的数据结构了。

使用特权

评论回复
地板
zhaoxqi| | 2022-4-17 23:45 | 只看该作者
好像是空间不够啊

使用特权

评论回复
5
wyjie| | 2022-4-17 23:47 | 只看该作者
按上面的方法能否解决啊

使用特权

评论回复
6
chuxh| | 2022-4-17 23:50 | 只看该作者
定义了很多变量啊。尽量用局部变量。

使用特权

评论回复
7
bqyj|  楼主 | 2022-4-17 23:52 | 只看该作者
我用了UC/OS-II操作系统   用STM32F030C8编译通过  RAM占用空间为Program Size: Code=14296 RO-data=3500 RW-data=232 ZI-data=7048 目前只有一个任务,看来得裁剪操作系统吧

使用特权

评论回复
8
stly| | 2022-4-17 23:53 | 只看该作者
030就别用RTOS了,跑跑裸机就行了

使用特权

评论回复
9
bqyj|  楼主 | 2022-4-17 23:54 | 只看该作者
问题解决了,裁剪操作系统减少了变量,谢谢大家。

使用特权

评论回复
10
我想看大海| | 2022-4-20 09:14 | 只看该作者
超空间了,要么精简代码,要么提高编译等级

使用特权

评论回复
11
玛尼玛尼哄| | 2022-7-25 13:05 | 只看该作者
  用STM32F030C8编译通过

使用特权

评论回复
12
麻花油条| | 2022-7-25 14:37 | 只看该作者
恭喜楼主问题得到解决

使用特权

评论回复
13
wanduzi| | 2022-8-10 13:34 | 只看该作者

使用特权

评论回复
14
SantaBunny| | 2023-2-23 20:25 | 只看该作者
看你这里大多是函数的声明的问题,你的函数要是跨文件调用,是要在调用的文件中先进行声明后才可以调用的

使用特权

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

本版积分规则

390

主题

4526

帖子

2

粉丝