目录
一、简单介绍

根据datasheet,笔者的STM32L051K8U6具有2k字节的EEPROM.另外再提一点,根据芯片容量不同,L051被分成四种等级:一级、二级、三级、五级.

NVM是The non-volatile memory 的缩写,即非易失性记忆体,flash,EEPROM就是NVM

NVM最重要的特性自然是存储,内部EEPROM支持按字节写入,估计还是按word来的。
五级器件可以一边写入,一边读取,还能选择从哪个分区启动,可能是用于固件升级。
具体的芯片细节参考编程手册(可以在cubemx工具中寻找,如下图)


EEPROM的起始地址为0x0808 0000,根据不同容量的器件,结束地址也不同。笔者使用的三级芯片,flash和EEPROM地址范围如下

二、cubeMX配置
对于芯片内置的EEPROM读写,只需开启调试接口

内部HSI时钟作为主频

三、实战开发
擦除
使用如下函数擦除
cpp
HAL_FLASHEx_DATAEEPROM_Erase(TEST_ADDRESS);
运行前先解锁EEPROM
cpp
HAL_FLASHEx_DATAEEPROM_Unlock();
运行完再锁定EEPROM
cpp
HAL_FLASHEx_DATAEEPROM_Lock();
向指定地址写入数据
cpp
HAL_FLASHEx_DATAEEPROM_Unlock();
HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_WORD, TEST_ADDRESS, 0x12345678);
HAL_FLASHEx_DATAEEPROM_Lock();


数据读出,赋给变量
