用STM32_FLASH模拟实现EEPROM功能

发布者:SparkStar22最新更新时间:2024-04-15 来源: elecfans关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

一、

在工业应用中经常使用EEPROM来存储数据,为降低成本、节省PCB空间,外部EEPROM可以用片内Flash加上特定的软件算法代替。


因为片内Flash的擦写次数有限,所以要加上特定算法来增加使用寿命。此算法ST提供了历程,我们可以移植到我们的程序里直接使用,比较方便。

二、源码移植

移植很简单,一共两个文件“eeprom.c','eeprom.h',移植前需要准备选择至少2块连续大小相同的flash扇区,示例程序中选用的是16K大小的2、3扇区。现在打开“eeprom.h”文件。移植时需要修改的内容:

图片

好了移植完成,注意此源码是基于HAL库的,也可以自己修改flash读写程序,之前我将这个移植到GD的芯片,这个还是很方便的。

三、使用方法

在“eeprom.h”文件中的最下方可以看到对外的功能函数

图片

我们首先需要将EE_Init()函数在主函数中调用初始化。剩下两个EE_ReadVariable( uint16_t VirtAddress, uint16_t* Data )和EE_WriteVariable( uint16_t VirtAddress, uint16_t Data )函数是我们将用到的FLASH读写函数。

这里需要注意这两个函数都有一个输入参数,这是一个虚拟地址,也就是一个将来寻找我们存储内容的地址。

例如,示例程序中,要存储3个变量值,分别给这3个变量一个虚拟地址,0x5555, 0x6666, 0x7777 当然你也可以不用这个三个值作为虚拟地址。

图片

将VarValue值分配虚拟地址为0x5555后通过EE_WriteVariable函数写入flash,然后根据0x5555这个地址使用EE_ReadVariable函数将刚刚存储的值读到VarDataTab数组里。如下图。

图片

使用起来同样简单。


关键字:STM32 引用地址:用STM32_FLASH模拟实现EEPROM功能

上一篇:STM32速成笔记(14)—CAN通信
下一篇:RTT lvgl在STM32H7上移植的步骤

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved