STM32L051实现内部EEPROM读写

目录

一、简单介绍

二、cubeMX配置

三、实战开发

擦除

向指定地址写入数据

数据读出,赋给变量


一、简单介绍

根据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();

数据读出,赋给变量

相关推荐
灯琰12 小时前
# STM32L051K6U6 IAP Bootloader 开发踩坑实录
stm32
菜鸟的学习日记、2 小时前
GPIO的几种模式——以STM32为例
stm32·单片机·嵌入式硬件·gpio
辰哥单片机设计2 小时前
STM32智能睡眠检测系统
stm32·单片机·嵌入式硬件
隔窗听雨眠4 小时前
在STM32上跑通TinyML:从模型训练到推理优化的完整实战指南
stm32·单片机·嵌入式硬件
嵌入式老牛6 小时前
DrvBsp_EEPROM文件化管理设计(一)
文件系统·eeprom
ryanuo76 小时前
Mac(M芯片)上进行嵌入式开发遇到的问题
嵌入式硬件·macos·开发板
机器视觉知识推荐、就业指导7 小时前
为什么同一个引脚不能同时做按键和串口
stm32·单片机·嵌入式硬件
崇山峻岭之间7 小时前
单片机基本定时器实验
单片机·嵌入式硬件
DS小龙哥7 小时前
基于ESP32设计的智能养蜂监测系统
stm32·单片机·嵌入式硬件·物联网·华为云
夜月yeyue8 小时前
STM32 DMA 双缓冲采样
linux·stm32·单片机·嵌入式硬件·系统架构