lib_crc.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *文件名:
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述:
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #include "lib_crc.h"
  12. /***************************************************************
  13. 函数名:CRC_getTypeValue
  14. 描 述:配置并返回一个CRC_CON配置参数
  15. 输入值:con_value CRC_CON 数据配置值结构体
  16. 返回值:CRC_CON配置值
  17. ***************************************************************/
  18. uint32_t CRC_getTypeValue(CRC_CONValueStruType con_value)
  19. {
  20. uint32_t type =0;
  21. type = (con_value.xorout | con_value.refout | con_value.refin |\
  22. con_value.mode|con_value.hs_type|con_value.init_data_type);
  23. return type;
  24. }
  25. /***************************************************************
  26. 函数名:CRC_EmptayCheck
  27. 描 述:查空函数
  28. 输入值:address: 查空区域首地址, data_len:查空区域字节长度
  29. 返回值:1:成功,0 :失败
  30. ***************************************************************/
  31. uint32_t CRC_EmptayCheck(void* address, uint32_t data_len)
  32. {
  33. CRC_EM CRC_EmptayCheck = (CRC_EM)(*(uint32_t *)CRC_EmptayCheck_addr);
  34. uint32_t result;
  35. __ASM("CPSID i");
  36. result = (*CRC_EmptayCheck)(address, data_len);
  37. __ASM("CPSIE i");
  38. return result;
  39. }
  40. /***************************************************************
  41. 函数名:CRC_FlashVerify
  42. 描 述:FLASH校验函数
  43. 输入值:address: 校验区域首地址, data_len:校验区域字节长度, type:校验方式配置
  44. 返回值:CRC校验码
  45. ***************************************************************/
  46. uint32_t CRC_FlashVerify(void* address, uint32_t data_len, uint32_t type)
  47. {
  48. CRC_FL CRC_FlashVerify = (CRC_FL)(*(uint32_t *)CRC_FlashVerify_addr);
  49. uint32_t result;
  50. __ASM("CPSID i");
  51. result = (*CRC_FlashVerify)(address, data_len, type);
  52. __ASM("CPSIE i");
  53. return result;
  54. }
  55. /***************************************************************
  56. 函数名:CRC_UserCal
  57. 描 述:用户数据校验函数
  58. 输入值:address: 用户校验数据首地址, data_len:校验区域字节长度, type:校验方式配置
  59. 返回值:CRC校验码
  60. ***************************************************************/
  61. uint32_t CRC_UserCal(void* address, uint32_t data_len, uint32_t type)
  62. {
  63. CRC_US CRC_UserCal = (CRC_US)(*(uint32_t *)CRC_UserCal_addr);
  64. uint32_t result;
  65. __ASM("CPSID i");
  66. result = (*CRC_UserCal)(address, data_len, type);
  67. __ASM("CPSIE i");
  68. return result;
  69. }
  70. /***************************************************************
  71. 函数名:CRC_CheckReset
  72. 描 述:CRC复位查询函数
  73. 输入值:无
  74. 返回值:复位标志,1:有复位标志,0:无复位标志
  75. ***************************************************************/
  76. uint32_t CRC_CheckReset(void)
  77. {
  78. CRC_CH CRC_CheckReset = (CRC_CH)(*(uint32_t *)CRC_CheckReset_addr);
  79. uint32_t result;
  80. __ASM("CPSID i");
  81. result = (*CRC_CheckReset)();
  82. __ASM("CPSIE i");
  83. return result;
  84. }
  85. /************************END OF FILE**************************/