关于stm32f103内部flash,其实网上有很多资料,ST官方也有中文版的详细资料教大家怎么来进行读写操作,在这里我要和大家分享的是两点,
1. 在擦除操作前需要先清除各种标志,在读写前也需要进行擦除异常标志的操作
2. 官方给的资料是如果写入的数据不是0XFFFFF,需要对整页进行擦除,这个是什么意思呢?其实就是说对于内部flash的写入,只能写0,不能写1,这也就是为什么需要擦除了,在擦除时的操作就是把整页的数据都烧写成0XFFFF,而且对于不同的ST的flash,可以进行不同的读写操作,比如F4可以32位写入,16位写入,8位写入,而对于F1,只能是16位的写入,这应该是跟芯片设计的时候,写入电压有关系,好了,说正事儿吧,关键的地方来了,就是如果你要写入两个数据,01和02,而你读出来你要写入的地方正好是0XFFFF 0XFFFF是不是就可以不用擦除了,直接写入呢?答案告诉你,不是的,如果你真这么做了,可能会让你的写入报错,也就是写不进去数据
下面分享一下正确的写入步骤:
解锁
第一步:读取整页数据
第二步:清除异常标志
第三步:擦除整页数据
第四步:将需要写入的数据保存到缓存中
第五步:进行写入数据
第六步:校验数据,也就是对写入的数据读出查看是否写入正确,如不正确需重新写入
上锁
|