#include "../app/app_data_save.h" #include "../msp/msp_eeprom.h" #include "app_config.h" DATA_SAVE data_save_arr[DATA_SAVE_LEN] = {0}; //初始化存放数据的结构体数组data_save_arr void data_save_init() { int i = 0; for(i = 0;i < DATA_SAVE_LEN; i++) { data_save_arr[i].head[0] = HEAD0; data_save_arr[i].head[1] = HEAD1; data_save_arr[i].available = 1; data_save_arr[i].val = 0; data_save_arr[i].tail[0] = TAIL0; data_save_arr[i].tail[1] = TAIL1; } } //存放数据到eeprom中:1.从eeprom中取出数组 2.遍历寻找空位 3.把数组放回(写入)eeprom中 void data_save_push(U8 Data) { int i = 0; int free = 0; // 从eeprom中取出数组 L0_Iap_Read_array(EEPROM_DATA_ADDR, data_save_arr,sizeof(data_save_arr)); if(data_save_arr[0].head[0] != HEAD0 || data_save_arr[0].head[1] != HEAD1 || data_save_arr[0].tail[0] != TAIL0 || data_save_arr[0].tail[1] != TAIL1) { data_save_init(); } // 遍历寻找空位 for(i = 0;i < DATA_SAVE_LEN; i++) { if(data_save_arr[i].available == 1) { free = i; break; } } // 当都有数据时 if(i == DATA_SAVE_LEN) { for(i = 0; i < DATA_SAVE_LEN - 1; i++) { data_save_arr[i] = data_save_arr[i+1]; } free = DATA_SAVE_LEN - 1; } // 放到free位置 data_save_arr[free].available = 0; data_save_arr[free].val = Data; // 把数组放回(写入)eeprom中 L0_Iap_Program_array(EEPROM_DATA_ADDR, data_save_arr,sizeof(data_save_arr)); }