OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2777|回复: 9

STM32F103的ROM不是512K吗?为啥下载需要1000多KROM的程序,一点问题都没有呢?

[复制链接]

13

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
72 小时
发表于 2018-5-4 10:34:21 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 hsy571639119 于 2018-5-4 10:35 编辑

5.png 6.png

图一为ST官网的资料,图2为我程序编译后生成的文件,从图2可以看出需要单片机的ROM为1076K,为啥把程序下载到STM32F103ZET6单片机里,程序运行一点问题都没有呢?
跪求大神指导,在线等。

最佳答案

查看完整内容[请看2#楼]

ROM大小40k多,FLASH是足够的了。 RAM大小1M多,可能是有些变量定义到了外部SRAM,即使没有用外部SRAM,只要定义变量的时候定义到了外部SRAM,编译也不会报错的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2018-4-4
在线时间
17 小时
发表于 2018-5-4 10:34:22 | 显示全部楼层
ROM大小40k多,FLASH是足够的了。
RAM大小1M多,可能是有些变量定义到了外部SRAM,即使没有用外部SRAM,只要定义变量的时候定义到了外部SRAM,编译也不会报错的。
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2018-5-4 10:45:24 | 显示全部楼层
还有这种操作,真牛!
回复

使用道具 举报

13

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
72 小时
 楼主| 发表于 2018-5-4 10:48:38 | 显示全部楼层
是啊,我也郁闷了
回复

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2018-4-4
在线时间
17 小时
发表于 2018-5-4 10:50:41 | 显示全部楼层
从图2可以看到Total ROM Size:41.8kB
回复

使用道具 举报

20

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-5-24
在线时间
98 小时
发表于 2018-5-4 10:58:14 | 显示全部楼层
从图上看你的flash够了,你的ram不够,话说这样编译是通不过的啊,还有你看下你的bin多大不就知道了
回复

使用道具 举报

13

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
72 小时
 楼主| 发表于 2018-5-4 10:58:38 | 显示全部楼层
2.png
回复

使用道具 举报

13

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
72 小时
 楼主| 发表于 2018-5-4 11:02:53 | 显示全部楼层
bin文件是不能看出需要单片机的RAM是多大,编译后生成的.map文件才是准确的数据,图2就是.map文件中内存占用的情况
回复

使用道具 举报

13

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
72 小时
 楼主| 发表于 2018-5-4 13:17:04 | 显示全部楼层
8楼说的有点道理,但是还是不明白,就拿原子的FATFS历程来说,RAM也是超过了1000K,那是把啥定义到了外部SRAM中呢,而且最大的文件cc936文件,我看了没有定义到外部呀,
回复

使用道具 举报

13

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
72 小时
 楼主| 发表于 2018-5-4 13:37:32 | 显示全部楼层
明白了,刚实验 了一下在cc936.c文件数组的定义前面加上 volatile关键字,内存不足的错误就报出来了,原因是因为cc936.c文件定义的数组没有用到,编译时编译器给优化了,实际烧写到单片机的程序是优化后的程序,从汉字显示实验可以看出,原子哥把CC936.C文件放到了W25Q64里,要不然程序也的报内存不足了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 14:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表