打印
[STM32F0]

flash模拟EEPROM导致芯片无法写入,帮忙分析一下

[复制链接]
2033|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lightour|  楼主 | 2017-2-6 14:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的芯片是STM32F051C8,需要存储几个变量,为了节约成本没有外挂E2PROM,参考了正点原子的FLASH模拟E2PROM程序,
变量如下:

一开始,老是存不上,我就把存储地址缩小
//FLASH起始地址
#define STM32_FLASH_BASE 0x08000000         //STM32 FALSH的起始地址
#define FLASH_SAVE_ADDR  0X08007800                //设置FLASH保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)

这个时候变量可以保存,但是芯片一直烧不进去程序,提示cannot access memory错误。换了一个芯片没事了,求大家帮我分析一下。
1、为什么之前变量一直没有存上,
2、程序的本代码所占用的FLASH大小怎么计算。

沙发
lightour|  楼主 | 2017-2-6 14:54 | 只看该作者
编译后提示的信息:

使用特权

评论回复
板凳
lightour|  楼主 | 2017-2-13 12:00 | 只看该作者

使用特权

评论回复
地板
zhaoyu2005| | 2017-2-13 12:28 | 只看该作者

一般存储的参数放在flash的末尾,这样后续升级什么的影响不大,至于你说的两个问题,第一个不清楚,第二个没明白你是否问的是编译后的单片机程序大小,如果是,看Program Size后边,具体你自己查。我用F1系列,直接用官方的代码,没问题,只改动变量数量、起始地址、大小

使用特权

评论回复
5
chenci2013| | 2017-2-13 12:58 | 只看该作者
flash的存储地址错误吗?

使用特权

评论回复
6
chenci2013| | 2017-2-13 13:01 | 只看该作者
现在的STM32带有eeprom了。

使用特权

评论回复
7
lightour|  楼主 | 2017-2-13 15:39 | 只看该作者
问题已解决,结贴领钱!!!

使用特权

评论回复
8
chenci2013| | 2017-2-13 16:50 | 只看该作者
lightour 发表于 2017-2-6 14:54
编译后提示的信息:

这个编译不是没有报错吗

使用特权

评论回复
9
chenci2013| | 2017-2-13 16:50 | 只看该作者
lightour 发表于 2017-2-6 14:54
编译后提示的信息:

这个编译不是没有报错吗

使用特权

评论回复
10
chenci2013| | 2017-2-13 16:52 | 只看该作者
lightour 发表于 2017-2-6 14:54
编译后提示的信息:

建议楼主查看一下是不是flash读写时序错误呢

使用特权

评论回复
11
mintspring| | 2017-2-13 22:09 | 只看该作者
你用STM32 ST-LINK Utility看一下数据大概到哪儿,后面从多少开始是空闲的。

使用特权

评论回复
12
wangdezhi| | 2017-2-13 22:48 | 只看该作者
这个有工程文件可以参考。

使用特权

评论回复
13
wangdezhi| | 2017-2-13 22:50 | 只看该作者
去看看野火的工程代码,里面就有仿真程序。

使用特权

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

本版积分规则

21

主题

97

帖子

1

粉丝