打印

STM32 Flash 多次写一个单元遇到的问题

[复制链接]
5926|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
seawwh|  楼主 | 2010-3-19 11:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将Flash 的某个单元写成 0xFFF0,成功。不做擦除,再写一次这个单元数据为0xFF00发现结果不变,仍然是0xFFF0.

  按照以前的经验,可以将1写为0,因此结果应该是 0xFF00 才对。

  如何才能多写入呢?
沙发
lxyppc| | 2010-3-19 12:18 | 只看该作者
STM32的Flash控制器认为一个单元如果不为0xFFFF,则不能对其进行写的操作,并且返回一个错误
而让Flash变为0xFFFF的方法只有擦除整个页(1K or 2K)

这点确实很烦人
如果要模拟EEPROM本来使用位图(BitMap)来标志用过的地方就可以了,这下非得用字图(Word Map)了

使用特权

评论回复
板凳
fengyan81| | 2010-3-19 14:24 | 只看该作者
楼主可以试试这个函数:FLASH_Status FLASH_EraseOptionBytes(void),应该可以擦掉字的。
然后用这个函数FLASH_Status FLASH_ProgramOptionByteData(u32 Address, u8 Data),看看能不能写进去。希望能达到你的要求,呵呵。
STM32 的FLASH是必须得擦才能写的,如果写过了,不进行擦除操作,好像写不进去。

使用特权

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

本版积分规则

145

主题

368

帖子

1

粉丝