记一次“粗暴”的Flash模拟EEPROM法

        
有个项目用的STM32F030的芯片,有2个参数需要存储,但是画板子的时候没有外加FLASH或24C02芯片。像平时用的多的STM32F1芯片,有专门的flash模拟eeprom库函数,直接调用库函数用用就好了。我在网上找了许久,也没找到STM32F0对应的库函数,而且我还是用的HAL库。

        
单片机内部是NORflash,擦除只能整页擦除,当然写可以按“字”写。这款芯片flash一共32k,分成32页,每页1k的大小;程序编译完一共要占用11k的空间,还有后面的21kflash是空闲的。

         我灵机一动,我干嘛费力气去找flash模拟EEPROM的库函数,或者自己模仿写一个库函数呢。
我一共两个参数,我直接每一页只存一个参数好了(当然,我这两个参数不需要频繁写,基本上只要出厂写一次,以后只要读取就好了)。这样写的时候整页擦除又不影响其他参数,读的时候就正常读就好了。虽然
2个参数占用了3k的flash,但是反正内存够用,哈哈。

这是往flash写参数的函数。






至于设备上电时读取数据么,就更加简单粗暴了,反正我知道内存地址,直接读咯






只不过这里要注意加volatile关键字,不然被编译器优化掉就悲剧了。











友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信