当前位置: 代码迷 >> 单片机 >> stm32 flash擦写解决方法
  详细解决方案

stm32 flash擦写解决方法

热度:358   发布时间:2016-04-28 14:50:46.0
stm32 flash擦写
stm32f103,  
具体详情:我接收到几组数据,需要写到指定的flash中,能否将这些地址覆盖的flash先整体擦除,再按接收到的数据中指定的地址写内容到flash中。

例如:我要写0x8020000-0x802ffff这部分flash.但接收到的数据不是按地址顺序排列的。我能否先将这部分flash擦除,再按接收数据里的地址写。

不知是否可行。
------解决思路----------------------
肯定可以啊,只要注意写是整页写,擦是整块擦,你如果将当前地址的块先进行擦除,可能会将之前的数据给擦掉,最好自己选几个块当作cache块作数据搬迁用。
------解决思路----------------------
操作FLASH我习惯这样的原则

读 - 改 - 写

只对一个缓冲操作,不引入别的变量地址

------解决思路----------------------
最近有一个的项目用到了stm32 Flash操作。我是基于一份官网的例程优化的,这里用flash模拟了EEPROM,很好的解决了负载均衡的问题,我项目里面一次存储字节数超过2K,按照官网的例程时间性能很差的(时间复杂度约为O(n方)),我的解决方法是用一个变量记录当前写入的地址,时间复杂度立马降为O(1)了。这是官网例程:
http://download.csdn.net/detail/wifity/7970909
http://download.csdn.net/detail/wifity/7970911
这是稍微详细点的介绍,等到项目结束我在把源码整理一下贴出来
http://blog.csdn.net/wifity/article/details/39537113
  相关解决方案