在嵌入式项目中,为了让设备在断电后某些关键参数不丢失,比如设备ID,网络配置,外设配置等。我们会将这些关键的参数存储到片内的Flash中。一般的做法都是在Flash划分一块空间做存储参数用,并且里面有一个空间存储一个标志,这个标志指示了Flash中是否存储了有效的参数。在第一次烧录程序时,Flash空间内没有存过参数,上电后这个标志读出来就是0XFF,此时程序就会将默认参数写入到Flash中,并且把标志位设置为某个特定值写入Flash中,这样下次上电再从Flash中读标志就会发现不是0XFF,如果是特定值,说明FLASH中参数有效,我们就会把FLASH中的参数读出来,拷贝给RAM中的全局变量。当然,为了更可靠,我们一般还会加入CRC校验。
#define PARA_FLASH_ADDR 0X80003000
typde struct{
uint8_t flag;
uint32_t id;
uint8_t baud;
uint16t crc;
}stPara_t;
stPara_t gPara = {0};
uint8_t Flash_ParamRead(stPara_t* para)
{
FlashRead((uint8_t*)para,PARA_FLASH_ADDR,sizeof(stPara_t));
return 1;
}
uint8_t Flash_ParamWrite(stPara_t* para)
{
FlashWrite((uint8_t*)para,PARA_FLASH_ADDR,sizeof(stPara_t));
return 1;
}
存取参数的时候
//取参数
Flash_ParamRead(&