内部Flash模拟EEPROM存储配置参数
问题场景:
设备需要保存用户设置的10个参数,要求断电不丢失 解决方案: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]c
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
#define PARAM_START_ADDR 0x0800FC00 // 使用最后一个扇区#define PARAM_SIZE 1024 // 1KB存储空间
[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]c
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
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();}
注意事项:
|