站长 发表于 2025-7-1 11:22:47

内部Flash模拟EEPROM存储配置参数

内部Flash模拟EEPROM存储配置参数
问题场景:
设备需要保存用户设置的10个参数,要求断电不丢失解决方案:
[*]划分Flash扇区(以STM32F103为例):
c


复制


下载





#define PARAM_START_ADDR 0x0800FC00// 使用最后一个扇区#define PARAM_SIZE       1024      // 1KB存储空间

[*]写入函数(带擦除检查):
c


复制


下载





void Flash_WriteParams(uint16_t *data) {    FLASH_Unlock();    if(*(uint32_t*)PARAM_START_ADDR != 0xFFFFFFFF) {      FLASH_ErasePage(PARAM_START_ADDR);// 需要先擦除    }    for(int i=0; i<10; i++) {      FLASH_ProgramHalfWord(PARAM_START_ADDR+i*2, data[i);    }    FLASH_Lock();}
注意事项:
[*]擦除次数限制:STM32F103 Flash约1万次
[*]建议写入前做CRC校验
[*]

页: [1]
查看完整版本: 内部Flash模拟EEPROM存储配置参数