一、
在工业应用中经常使用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速成笔记(14)—CAN通信
下一篇:RTT lvgl在STM32H7上移植的步骤
- 热门资源推荐
- 热门放大器推荐
- EVAL-L99UDL01,基于L99UDL01的通用门锁演示板
- 使用 Sanken Electric Co., Ltd 的 SPF8050J 的参考设计
- TCR6DA1525、200mA、1.5V 和 2.5V 输出电压双路输出 CMOS 低压降稳压器的典型应用
- 使用 Alpha and Omega Semiconductor 的 AOZ1960DI 的参考设计
- LT1952EGN-1 18V 至 72V 宽输入、高效率、12V/12A 输出、有源复位正激转换器的典型应用电路
- EVAL-AD7714-3EBZ,使用 AD7714 的评估板,24 位信号调理模数转换器
- NCL30000 功率因数校正可调光 LED 驱动器的典型应用
- 使用 Richtek Technology Corporation 的 RT9014 的参考设计
- MAXREFDES1226:借助MAX17690和MAX17606,效率低至87%的小尺寸,薄型,5V / 1.5A,同步,无光耦反激式DC-DC转换器
- 用于更高输出电流的 LT3066EDE 并联稳压器的典型应用电路

现代雷达系统的信号设计
LT1494HS8#PBF

BFR340T






京公网安备 11010802033920号