内部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]