打印
[STM32F2]

内部Flash无法实时读取

[复制链接]
2361|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lhw21|  楼主 | 2014-4-28 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天做stm32f205的内部Flash读写,发现了一个问题。一般Flash无法写1,我在操作的时候故意不擦扇区对一个写了0x00的地址写0xff。然后再读取这个地址的内容,发现读取的内容就是0xff,然后我修改程序,只是单纯读取这个地址的内容,重新烧写程序,发现读取的内容是0x00。写函数是官方的FLASH_ProgramByte,读取时用的*(__IO uint8_t*)。请教各位大神,为什么会出这样的情况?
沙发
mmuuss586| | 2014-4-28 11:24 | 只看该作者
本帖最后由 mmuuss586 于 2014-4-28 11:27 编辑

也许你没写成功吧。
写段程序,借助串口,验证下。

使用特权

评论回复
板凳
pattywu| | 2014-4-28 11:31 | 只看该作者
估计是代码优化了,根本没去读。

使用特权

评论回复
地板
lhw21|  楼主 | 2014-4-28 11:33 | 只看该作者
mmuuss586 发表于 2014-4-28 11:24
也许你没写成功吧。
写段程序,借助串口,验证下。

我就是用的串口查看的,按理说应该是不可能会写成功,只是不知道写了马上读会是0xff。这个读取难道不是实时的。

使用特权

评论回复
5
lhw21|  楼主 | 2014-4-28 11:43 | 只看该作者
pattywu 发表于 2014-4-28 11:31
估计是代码优化了,根本没去读。

我对一个地址写0x7f,不擦除,然后同样的那个地址写0x4f。发现读出来的是0x4f,改只读程序,重新烧进去读取那个地址的值,也是0x4f,没错。芯片可以位写,但是问题是不管这个值写没写进去,马上读出来的值一定是我最后写进去的值,然后重新烧程序只读发现不是那个值。理论上可以写进去的值后来读的一样,理论上不可能的值就是不是一样。

使用特权

评论回复
6
diweo| | 2014-4-28 12:13 | 只看该作者
万一你串口程序有问题呢?
还是接调试器设断点,单步执行,直接观察Memory browser来的简便。

使用特权

评论回复
7
lhw21|  楼主 | 2014-4-28 12:29 | 只看该作者
diweo 发表于 2014-4-28 12:13
万一你串口程序有问题呢?
还是接调试器设断点,单步执行,直接观察Memory browser来的简便。 ...

好奇怪,单步执行就没有这样的问题,全速运行就会出现上面的问题。

使用特权

评论回复
8
lhw21|  楼主 | 2014-4-28 14:17 | 只看该作者
问题找到了,如果在写后马上读就会出问题,如果写和读中间有间隔,比如延时,读出来的值就没有问题。但是为什么会有这样的情况出现呢?

使用特权

评论回复
9
MOn51| | 2014-4-29 20:56 | 只看该作者
把代码发出来,才能知道原因。STM32F207 FLASH 很好操作。

使用特权

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

本版积分规则

3

主题

11

帖子

0

粉丝