A59项目初版工程 1.电压+光感adc采样优化 2.串口逻辑优化
This commit is contained in:
191
ArkmicroFiles/libcpu-amt630hv100/source/sfud_data.c
Normal file
191
ArkmicroFiles/libcpu-amt630hv100/source/sfud_data.c
Normal file
@ -0,0 +1,191 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
#include "board.h"
|
||||
#include "sfud.h"
|
||||
#include "sysinfo.h"
|
||||
#include "sfud_data.h"
|
||||
#include "pwm.h"
|
||||
|
||||
#ifndef WITH_MVVM
|
||||
|
||||
SfudData_t sfud_data_saved ={0};
|
||||
#define SFUD_DATA_FLASH_OFFSET 0xfff000
|
||||
SfudMileData_t sfud_mile_data ={0};
|
||||
static uint32_t save_addr = 0;
|
||||
static uint16_t User_data_index = 0;
|
||||
#define SFUD_MILE_DATA_FLASH_OFFSET 0xffe000//0xffe000
|
||||
#define MILE_FLASH_OFFSET 0x1000
|
||||
|
||||
void read_mileage(uint32_t trip_data,uint32_t total_data)
|
||||
{
|
||||
uint32_t i;
|
||||
sfud_flash *sflash = sfud_get_device(0);
|
||||
save_addr = SFUD_MILE_DATA_FLASH_OFFSET;
|
||||
sfud_read(sflash, save_addr, sizeof(SfudMileData_t), (void*)&sfud_mile_data);
|
||||
|
||||
//生产时初始化为0
|
||||
if(sfud_mile_data.TOTAL_mileage == 0XFFFFFFFF)
|
||||
{
|
||||
sfud_mile_data.TOTAL_mileage = 0;
|
||||
sfud_mile_data.TRIP_mileage = 0;
|
||||
User_data_index = 0;
|
||||
|
||||
sfud_write(sflash,save_addr,sizeof(SfudMileData_t),(void*)&sfud_mile_data);
|
||||
printf("Init mileage\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
for(i=0;i<256;i++) //数据区长度4k
|
||||
{
|
||||
sfud_read(sflash, save_addr, sizeof(SfudMileData_t), (void*)&sfud_mile_data);
|
||||
if(sfud_mile_data.TOTAL_mileage == 0XFFFFFFFF)
|
||||
{
|
||||
break;
|
||||
}
|
||||
save_addr += 8;
|
||||
}
|
||||
save_addr -= 8;
|
||||
sfud_read(sflash, save_addr, sizeof(SfudMileData_t), (void*)&sfud_mile_data);
|
||||
if(sfud_mile_data.TRIP_mileage > sfud_mile_data.TOTAL_mileage)
|
||||
sfud_mile_data.TRIP_mileage = sfud_mile_data.TOTAL_mileage;
|
||||
Set_sys_trip_mileage(sfud_mile_data.TRIP_mileage);
|
||||
Set_sys_total_mileage(sfud_mile_data.TOTAL_mileage);
|
||||
User_data_index = i;
|
||||
printf("Read mileage\r\n");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// void ReadMileageData(void){
|
||||
// SfudMileData_t flash_data = {0};
|
||||
// sfud_flash *sflash = sfud_get_device(0);
|
||||
// if(sfud_read(sflash, SFUD_MILE_DATA_FLASH_OFFSET, sizeof(SfudMileData_t), (void*)&flash_data)==SFUD_SUCCESS){
|
||||
// printf("sfud_read >>>>>>>>>>>>>>>>> OK .add = %08X , %08X , %08X .\r\n",SFUD_MILE_DATA_FLASH_OFFSET,flash_data.TOTAL_mileage,flash_data.TRIP_mileage);
|
||||
// }
|
||||
// }
|
||||
|
||||
void SaveMileageData(uint32_t trip_data,uint32_t total_data){
|
||||
SfudMileData_t flash_data = {0};
|
||||
sfud_flash *sflash = sfud_get_device(0);
|
||||
uint8_t buff[sizeof(SfudMileData_t)];//定义buff用于保存结构体
|
||||
memset(buff,0,sizeof(buff));//将buff内存清零
|
||||
for(uint8_t i = 0;i<8;i++){
|
||||
if(User_data_index < 255)
|
||||
{
|
||||
User_data_index++;
|
||||
save_addr += 8;
|
||||
}else{
|
||||
User_data_index = 0;
|
||||
save_addr = SFUD_MILE_DATA_FLASH_OFFSET;
|
||||
sfud_erase(sflash, save_addr, MILE_FLASH_OFFSET);
|
||||
printf("erase data\r\n");
|
||||
}
|
||||
|
||||
((SfudMileData_t *)buff)->TRIP_mileage = trip_data;
|
||||
((SfudMileData_t *)buff)->TOTAL_mileage = total_data;
|
||||
printf("User_data_index = %d ,save_addr =%08X .\r\n",User_data_index,save_addr);
|
||||
if (sfud_write(sflash,save_addr,sizeof(buff),buff)!=SFUD_SUCCESS){
|
||||
printf("i = %d .save sfud mile error.\r\n",i);
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Classify_SaveDataToFlash(SfudData_t user_data,uint8_t type){
|
||||
uint8_t buff[sizeof(SfudData_t)];//定义buff用于保存结构体
|
||||
memset(buff,0,sizeof(buff));//将buff内存清零
|
||||
|
||||
switch(type){
|
||||
case 0:
|
||||
((SfudData_t *)buff)->language = user_data.language;
|
||||
break;
|
||||
case 1:
|
||||
((SfudData_t *)buff)->theme = user_data.theme;
|
||||
break;
|
||||
case 2:
|
||||
((SfudData_t *)buff)->theme_state = user_data.theme_state;
|
||||
break;
|
||||
case 3:
|
||||
((SfudData_t *)buff)->light_value = user_data.light_value;
|
||||
break;
|
||||
case 4:
|
||||
((SfudData_t *)buff)->bt_on_off = user_data.bt_on_off;
|
||||
break;
|
||||
case 5:
|
||||
strcpy(((SfudData_t *)buff)->f_mac_address,user_data.f_mac_address);
|
||||
break;
|
||||
case 6:
|
||||
strcpy(((SfudData_t *)buff)->r_mac_address,user_data.r_mac_address);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
sfud_flash *sflash = sfud_get_device(0);
|
||||
if (sfud_erase_write(sflash,SFUD_DATA_FLASH_OFFSET,sizeof(buff),buff)!=SFUD_SUCCESS){
|
||||
printf("sfud data write error.\r\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SaveDataToFlash(SfudData_t user_data){
|
||||
uint8_t buff[sizeof(SfudData_t)];//定义buff用于保存结构体
|
||||
memset(buff,0,sizeof(buff));//将buff内存清零
|
||||
printf("**************save flash***********************\r\n");
|
||||
// printf("user_data==> %d-%d-%d-%d-%d,%d",user_data.language,user_data.display_unit,user_data.theme
|
||||
// ,user_data.theme_state,user_data.light_value,user_data.bt_on_off);
|
||||
printf("mac:%02X%02X%02X%02X%02X%02X , %02X%02X%02X%02X%02X%02X end\r\n",user_data.f_mac_address[0],user_data.f_mac_address[1],user_data.f_mac_address[2]
|
||||
,user_data.f_mac_address[3],user_data.f_mac_address[4],user_data.f_mac_address[5]
|
||||
,user_data.r_mac_address[0],user_data.r_mac_address[1],user_data.r_mac_address[2]
|
||||
,user_data.r_mac_address[3],user_data.r_mac_address[4],user_data.r_mac_address[5]);
|
||||
// printf("data:%02X %02X%02X , %02X %02X%02X end\r\n"
|
||||
// ,user_data.f_mac_address[6],user_data.f_mac_address[7],user_data.f_mac_address[8]
|
||||
// ,user_data.r_mac_address[6],user_data.r_mac_address[7],user_data.r_mac_address[8]);
|
||||
// printf("*************************************\r\n");
|
||||
// printf("mile data: %02X,%02X end\r\n"
|
||||
// ,user_data.maintenance_mileage,user_data.mileage_flag);
|
||||
printf("*************************************\r\n");
|
||||
|
||||
if(user_data.light_value==0)
|
||||
user_data.light_value=1;
|
||||
else if(user_data.light_value>6)
|
||||
user_data.light_value=5;
|
||||
|
||||
((SfudData_t *)buff)->factory_reset = 1;
|
||||
((SfudData_t *)buff)->language = user_data.language;
|
||||
((SfudData_t *)buff)->display_unit = user_data.display_unit;
|
||||
((SfudData_t *)buff)->theme = user_data.theme;
|
||||
((SfudData_t *)buff)->theme_state = user_data.theme_state;
|
||||
((SfudData_t *)buff)->light_value = user_data.light_value;
|
||||
((SfudData_t *)buff)->bt_on_off = user_data.bt_on_off;
|
||||
//((SfudData_t *)buff)->trip_uint = user_data.trip_uint;
|
||||
strcpy(((SfudData_t *)buff)->f_mac_address,user_data.f_mac_address);
|
||||
strcpy(((SfudData_t *)buff)->r_mac_address,user_data.r_mac_address);
|
||||
((SfudData_t *)buff)->maintenance_mileage = user_data.maintenance_mileage;
|
||||
((SfudData_t *)buff)->mileage_flag = user_data.mileage_flag;
|
||||
|
||||
sfud_flash *sflash = sfud_get_device(0);
|
||||
if (sfud_erase_write(sflash,SFUD_DATA_FLASH_OFFSET,sizeof(buff),buff)!=SFUD_SUCCESS){
|
||||
printf("sfud data write error.\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
void ReadDataToFlash(void){
|
||||
sfud_flash *sflash = sfud_get_device(0);
|
||||
sfud_read(sflash, SFUD_DATA_FLASH_OFFSET, sizeof(SfudData_t), (void*)&sfud_data_saved);
|
||||
}
|
||||
|
||||
SfudData_t* userData_getSfudSaved(void)
|
||||
{
|
||||
/*printf("userData_getSfudSaved: %d-%d-%d-%d-%d-%d \r\n",sfud_data_saved.language,
|
||||
sfud_data_saved.display_unit,sfud_data_saved.theme,sfud_data_saved.theme_state,
|
||||
sfud_data_saved.light_value,sfud_data_saved.bt_on_off);*/
|
||||
return &sfud_data_saved;
|
||||
}
|
||||
#endif /*WITH_MVVM*/
|
Reference in New Issue
Block a user