user_config.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #include "user_config.h"
  2. user_config_param_s user_config_param = USER_CONFIG_STAT_DEFAULT_CONFIG;
  3. /*******************************************************************************
  4. * @函数名称 set_user_config_param_init
  5. * @函数说明 解析注册指纹采集图像
  6. * @输入参数 param:参数
  7. * @输出参数 无
  8. * @返回参数 无
  9. *******************************************************************************/
  10. void set_user_config_param_init(user_config_param_s *param)
  11. {
  12. memset(param,0,sizeof(user_config_param_s));
  13. param->head = HEAD_VALUE;
  14. param->can_baud = CAN_BAUD_1000;
  15. }
  16. /*******************************************************************************
  17. * @函数名称 check_can_baud
  18. * @函数说明 检查CAN波特率
  19. * @输入参数 baud:波特率
  20. * @输出参数 无
  21. * @返回参数 无
  22. *******************************************************************************/
  23. bool check_can_baud(uint32_t baud)
  24. {
  25. switch(baud)
  26. {
  27. case CAN_BAUD_NULL:
  28. case CAN_BAUD_100:
  29. case CAN_BAUD_150:
  30. case CAN_BAUD_200:
  31. case CAN_BAUD_250:
  32. case CAN_BAUD_300:
  33. case CAN_BAUD_400:
  34. case CAN_BAUD_500:
  35. case CAN_BAUD_666:
  36. case CAN_BAUD_800:
  37. case CAN_BAUD_1000:return true;
  38. default:return false;
  39. }
  40. }
  41. /*******************************************************************************
  42. * @函数名称 FLASH_read
  43. * @函数说明 读取flash
  44. * @输入参数 addr:地址
  45. pData:数据指针
  46. len:数据长度
  47. * @输出参数 无
  48. * @返回参数 无
  49. *******************************************************************************/
  50. void FLASH_read(uint32_t addr, uint8_t *pData, uint32_t len)
  51. {
  52. uint32_t i;
  53. for(i=0;i<len;i++)
  54. {
  55. *pData++ = *(uint8_t*)addr++;
  56. }
  57. }
  58. /*******************************************************************************
  59. * @函数名称 check_read_config_param
  60. * @函数说明 比较读到的参数
  61. * @输入参数 param:参数
  62. * @输出参数 无
  63. * @返回参数 比较结果
  64. *******************************************************************************/
  65. static bool check_read_config_param(user_config_param_s *param)
  66. {
  67. if(param->head != HEAD_VALUE)
  68. {
  69. return false;
  70. }
  71. if(false == check_can_baud(param->can_baud))
  72. {
  73. return false;
  74. }
  75. return true;
  76. }
  77. /*******************************************************************************
  78. * @函数名称 User_Config_Read_Config
  79. * @函数说明 读取配置信息
  80. * @输入参数 无
  81. * @输出参数 无
  82. * @返回参数 无
  83. *******************************************************************************/
  84. void User_Config_Read_Config(void)
  85. {
  86. user_config_param_s param;
  87. /* Read the first block */
  88. FLASH_read(CONFIG_DATAFLASH_ADDR, (uint8_t *)&param, sizeof(user_config_param_s));
  89. if(true == check_read_config_param(&param))
  90. {
  91. PRINT("rd config succ!\n");
  92. memcpy(&user_config_param, &param, sizeof(user_config_param_s));
  93. PRINT("can baud=%d\n", user_config_param.can_baud);
  94. }
  95. else{
  96. PRINT("rd config error!\n");
  97. set_user_config_param_init(&user_config_param);
  98. User_Config_Write_Config();
  99. }
  100. }
  101. /*******************************************************************************
  102. * @函数名称 User_Config_Write_Config
  103. * @函数说明 写入配置信息
  104. * @输入参数 无
  105. * @输出参数 无
  106. * @返回参数 无
  107. *******************************************************************************/
  108. void User_Config_Write_Config(void)
  109. {
  110. uint8_t buf[256] = {0xFF};
  111. memset(buf, 0xFF, 256);
  112. memcpy(buf, (uint8_t *)&user_config_param, sizeof(user_config_param_s));
  113. FLASH_Unlock_Fast();
  114. /* Erase the first block */
  115. FLASH_ErasePage_Fast(CONFIG_DATAFLASH_ADDR);
  116. /* Programming DataFlash */
  117. FLASH_ProgramPage_Fast(CONFIG_DATAFLASH_ADDR, (uint32_t *)buf);
  118. FLASH_Lock_Fast();
  119. }
  120. /*******************************************************************************
  121. * @函数名称 user_config_init
  122. * @函数说明 初始化
  123. * @输入参数 无
  124. * @输出参数 无
  125. * @返回参数 无
  126. *******************************************************************************/
  127. void user_config_init(void)
  128. {
  129. User_Config_Read_Config();
  130. }