STM32 EEPROM初始化与数据校验实战指南
在嵌入式开发中,EEPROM作为非易失性存储器,经常用于保存系统配置、运行参数等关键数据。但很多开发者在使用新板子时都会遇到一个典型问题——首次读取EEPROM时返回异常值(通常是255),导致程序逻辑出错。这种情况在蓝桥杯嵌入式竞赛中尤为常见,参赛选手往往需要快速解决这类基础问题才能专注于核心功能的开发。
1. EEPROM首次使用检测机制
1.1 为什么新板子的EEPROM会读取失败
全新的EEPROM芯片所有存储单元通常处于未编程状态,读取时会返回十六进制值0xFF(即十进制255)。这与已写入数据的正常状态存在明显差异:
- 出厂状态:所有地址值为0xFF
- 写入后状态:特定地址有确定值
- 异常状态:部分地址值异常改变
// 典型的新芯片读取结果
uint8_t value = EEPROM_Read(0x00); // 返回255
1.2 双地址校验法的实现
为确保可靠检测首次使用情况,推荐采用双地址校验法。这种方法通过在两个特定地址写入特定值,并在每次启动时验证这两个值:
#define FIRST_RUN_MARKER_1 0xEE
#define FIRST_RUN_MARKER_2 0xEF
#define MARKER_VALUE_1 32
#define MARKER_VALUE_2 64
bool is_first_run(void) {
uint8_t val1 = EEPROM_Read(FIRST_RUN_MARKER_1);
uint8_t val2 = EEPROM_Read(FIRST_RUN_MARKER_2);
return (val1 != MARKER_VALUE_1) || (val2 != MAR


529

被折叠的 条评论
为什么被折叠?



