一、Flash读写结构体类型数据
typedef struct
{
float flow[30];
uint16 flow_len;
}DataStruct; //要保存的结构体
//将 DataStruct 结构体类型的数据保存到 flash
static int32 SaveDataToFlash(float data[30], uint16 data_len)
{
int32 lRet = EXIT_FAILURE;
uint8 buff[sizeof(DataStruct)]; //定义 buff 内存,用于保存 DataStruct 结构体
memset(buff,0,sizeof(buff)); //将 buff 内存 清零
((DataStruct *)buff)-> flow_len = data_len; //初始化 DataStruct 结构体,数据保存到 buff
memcpy(((DataStruct *)buff)-> flow, data, data_len*sizeof(data[0]));
if(EXIT_FAILURE == //擦除 flash
at25df_block_erase(AT25DF_BLOCK_4K,TSI_CALIBRARION_DATA_START_FLASH_ADR))
{
return EXIT_FAILURE;
}
// 将数据保存到 flash
at25df_write_data(DATA_START_FLASH_ADR, buff, sizeof(buff));
return EXIT_SUCCESS;
}
//从 flash 中读出 DataStruct 结构体类型的数据
static int32 ReadDataFromFlash(DataStruct data_struct )
{
at25df_read_data(DATA_START_FLASH_ADR, (uint8_t *)&data_struct , sizeof(DataStruct));
}