打印
[STM32H7]

stm32内部FLASH模拟E2PROM

[复制链接]
302|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wandersky|  楼主 | 2022-5-6 17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wandersky 于 2022-5-6 17:28 编辑

STM32内部FLASH模拟E2PROM  代码参考了STM32官方的例程与网友“半壶水”的程序。
使用内部FLASH的最后一个扇区来模拟E2PROM来保存经常改变的参数。 此参数以参数结构体的形式保存在flash中

struct element{
        uint16_t addr;
        uint8_t dat[30];
};
其中addr为参数地址标示,用来区别不同的参数。 dat[30],为有效参数空间,最大可以保存30B,如果需要扩展,可以把此结构体的扩展到32B的整数倍即可,为了兼容STM32H7系统内部FLASH。 例程使用的是STM32H743 nucleo板子, 上电会初始化ele1默认值为0,当USER按键按下1次,ele1值加1。

使用说明:
1.对BASS_ADDR_EMU_FLASH首地址做定义(不定义则使用最后一个扇区作为模拟FLASH)
2.上电后先初始化,e2prom_init()
3.初始化后就可以读写要保存的参数了。
4.寿命:如果只有1个参数, 128k/32*10000=4000W次,能满足大多数需求
5.存在问题:当存储数据的FLASH写满时,这时需要擦除块操作,如果此时板子断电重启,则保存的所有参数将丢失。

源码地址https://github.com/wanderksy/e2prom

使用特权

评论回复
沙发
littlelida| | 2022-5-7 15:45 | 只看该作者
这么做的目的是什么

使用特权

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

本版积分规则

17

主题

189

帖子

2

粉丝