hal_crc.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file hal_crc.c
  3. /// @author AE TEAM
  4. /// @brief THIS FILE PROVIDES ALL THE CRC FIRMWARE FUNCTIONS.
  5. ////////////////////////////////////////////////////////////////////////////////
  6. /// @attention
  7. ///
  8. /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
  9. /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
  10. /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
  11. /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
  12. /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
  13. /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
  14. ///
  15. /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  16. ////////////////////////////////////////////////////////////////////////////////
  17. // Define to prevent recursive inclusion
  18. #define _HAL_CRC_C_
  19. // Files includes
  20. #include "hal_crc.h"
  21. ////////////////////////////////////////////////////////////////////////////////
  22. /// @addtogroup MM32_Hardware_Abstract_Layer
  23. /// @{
  24. ////////////////////////////////////////////////////////////////////////////////
  25. /// @addtogroup CRC_HAL
  26. /// @{
  27. ////////////////////////////////////////////////////////////////////////////////
  28. /// @addtogroup CRC_Exported_Functions
  29. /// @{
  30. ////////////////////////////////////////////////////////////////////////////////
  31. /// @brief Resets the CRC Data register (DR).
  32. /// @param None.
  33. /// @retval None.
  34. ////////////////////////////////////////////////////////////////////////////////
  35. void CRC_ResetDR()
  36. {
  37. CRC->CR = CRC_CR_RESET;
  38. }
  39. //#pragma optimize(0)
  40. ////////////////////////////////////////////////////////////////////////////////
  41. /// @brief Computes the 32-bit CRC of a given data word(32-bit).
  42. /// @param Data: data word(32-bit) to compute its CRC
  43. /// @retval 32-bit CRC
  44. ////////////////////////////////////////////////////////////////////////////////
  45. u32 CRC_CalcCRC(u32 data)
  46. {
  47. CRC->DR = data;
  48. return (CRC->DR);
  49. }
  50. ////////////////////////////////////////////////////////////////////////////////
  51. /// @brief Computes the 32-bit CRC of a given buffer of data word(32-bit).
  52. /// @param buffer: pointer to the buffer containing the data to be computed
  53. /// @param length: length of the buffer to be computed
  54. /// @retval 32-bit CRC
  55. ////////////////////////////////////////////////////////////////////////////////
  56. u32 CRC_CalcBlockCRC(u32* buffer, u32 length)
  57. {
  58. u32 i;
  59. for (i = 0; i < length; i++) {
  60. CRC->DR = buffer[i];
  61. }
  62. return (CRC->DR);
  63. }
  64. ////////////////////////////////////////////////////////////////////////////////
  65. /// @brief Returns the current CRC value.
  66. /// @param None.
  67. /// @retval 32-bit CRC
  68. ////////////////////////////////////////////////////////////////////////////////
  69. u32 CRC_GetCRC(void)
  70. {
  71. return (CRC->DR);
  72. }
  73. ////////////////////////////////////////////////////////////////////////////////
  74. /// @brief Stores a 8-bit data in the Independent Data(ID) register.
  75. /// @param id_value: 8-bit value to be stored in the ID register
  76. /// @retval None.
  77. ////////////////////////////////////////////////////////////////////////////////
  78. void CRC_SetIDRegister(u8 id_value)
  79. {
  80. CRC->IDR = id_value;
  81. }
  82. ////////////////////////////////////////////////////////////////////////////////
  83. /// @brief Returns the 8-bit data stored in the Independent Data(ID) register
  84. /// @param None.
  85. /// @retval 8-bit value of the ID register
  86. ////////////////////////////////////////////////////////////////////////////////
  87. u8 CRC_GetIDRegister()
  88. {
  89. return (CRC->IDR);
  90. }
  91. /// @}
  92. /// @}
  93. /// @}