记一次“粗暴”的Flash模拟EEPROM法(用的STM32F030C6芯片,没找到模拟EEPROM库函数)

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

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

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

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

这是往flash写参数的函数。


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


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






猜你喜欢

转载自blog.csdn.net/fxltsbl007/article/details/80462988