#include "user_config.h" user_config_param_s user_config_param = USER_CONFIG_STAT_DEFAULT_CONFIG; /******************************************************************************* * @函数名称 set_user_config_param_init * @函数说明 解析注册指纹采集图像 * @输入参数 param:参数 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void set_user_config_param_init(user_config_param_s *param) { memset(param,0,sizeof(user_config_param_s)); param->head = HEAD_VALUE; param->can_baud = CAN_BAUD_1000; } /******************************************************************************* * @函数名称 check_can_baud * @函数说明 检查CAN波特率 * @输入参数 baud:波特率 * @输出参数 无 * @返回参数 无 *******************************************************************************/ bool check_can_baud(uint32_t baud) { switch(baud) { case CAN_BAUD_100: case CAN_BAUD_150: case CAN_BAUD_200: case CAN_BAUD_250: case CAN_BAUD_300: case CAN_BAUD_400: case CAN_BAUD_500: case CAN_BAUD_666: case CAN_BAUD_800: case CAN_BAUD_1000:return true; default:return false; } } /******************************************************************************* * @函数名称 FLASH_read * @函数说明 读取flash * @输入参数 addr:地址 pData:数据指针 len:数据长度 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void FLASH_read(uint32_t addr, uint8_t *pData, uint32_t len) { uint32_t i; for(i=0;ihead != HEAD_VALUE) { return false; } if(false == check_can_baud(param->can_baud)) { return false; } return true; } /******************************************************************************* * @函数名称 User_Config_Read_Config * @函数说明 读取配置信息 * @输入参数 无 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void User_Config_Read_Config(void) { user_config_param_s param; /* Read the first block */ FLASH_read(CONFIG_DATAFLASH_ADDR, (uint8_t *)¶m, sizeof(user_config_param_s)); if(true == check_read_config_param(¶m)) { PRINT("rd config succ!\n"); memcpy(&user_config_param, ¶m, sizeof(user_config_param_s)); PRINT("can baud=%d\n", user_config_param.can_baud); } else{ PRINT("rd config error!\n"); set_user_config_param_init(&user_config_param); User_Config_Write_Config(); } } /******************************************************************************* * @函数名称 User_Config_Write_Config * @函数说明 写入配置信息 * @输入参数 无 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void User_Config_Write_Config(void) { uint8_t buf[256] = {0xFF}; memset(buf, 0xFF, 256); memcpy(buf, (uint8_t *)&user_config_param, sizeof(user_config_param_s)); FLASH_Unlock_Fast(); /* Erase the first block */ FLASH_ErasePage_Fast(CONFIG_DATAFLASH_ADDR); /* Programming DataFlash */ FLASH_ProgramPage_Fast(CONFIG_DATAFLASH_ADDR, (uint32_t *)buf); FLASH_Lock_Fast(); } /******************************************************************************* * @函数名称 user_config_save_can_baud * @函数说明 保存can波特率 * @输入参数 无 * @输出参数 无 * @返回参数 无 *******************************************************************************/ bool user_config_save_can_baud(uint32_t baud) { if(false == check_can_baud(baud)) { return false; } if(user_config_param.can_baud != baud) { user_config_param.can_baud = baud; User_Config_Write_Config(); } return true; } /******************************************************************************* * @函数名称 user_config_init * @函数说明 初始化 * @输入参数 无 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void user_config_init(void) { User_Config_Read_Config(); }