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>© COPYRIGHT MINDMOTION </CENTER></H2>
16 ////////////////////////////////////////////////////////////////////////////////
17
18 // Define to prevent recursive inclusion
19 #define _HAL_CRC_C_
20
21 // Files includes
22 #include "hal_crc.h"
23
24 ////////////////////////////////////////////////////////////////////////////////
25 /// @addtogroup MM32_Hardware_Abstract_Layer
26 /// @{
27
28 ////////////////////////////////////////////////////////////////////////////////
29 /// @addtogroup CRC_HAL
30 /// @{
31
32 ////////////////////////////////////////////////////////////////////////////////
33 /// @addtogroup CRC_Exported_Functions
34 /// @{
35
36 ////////////////////////////////////////////////////////////////////////////////
37 /// @brief Resets the CRC Data register (DR).
38 /// @param None.
39 /// @retval None.
40 ////////////////////////////////////////////////////////////////////////////////
CRC_ResetDR()41 void CRC_ResetDR()
42 {
43 CRC->CR = CRC_CR_RESET;
44 }
45 //#pragma optimize(0)
46 ////////////////////////////////////////////////////////////////////////////////
47 /// @brief Computes the 32-bit CRC of a given data word(32-bit).
48 /// @param Data: data word(32-bit) to compute its CRC
49 /// @retval 32-bit CRC
50 ////////////////////////////////////////////////////////////////////////////////
CRC_CalcCRC(u32 data)51 u32 CRC_CalcCRC(u32 data)
52 {
53 CRC->DR = data;
54 return (CRC->DR);
55 }
56
57 ////////////////////////////////////////////////////////////////////////////////
58 /// @brief Computes the 32-bit CRC of a given buffer of data word(32-bit).
59 /// @param buffer: pointer to the buffer containing the data to be computed
60 /// @param length: length of the buffer to be computed
61 /// @retval 32-bit CRC
62 ////////////////////////////////////////////////////////////////////////////////
CRC_CalcBlockCRC(u32 * buffer,u32 length)63 u32 CRC_CalcBlockCRC(u32* buffer, u32 length)
64 {
65 u32 i;
66 for (i = 0; i < length; i++) {
67 CRC->DR = buffer[i];
68 }
69 return (CRC->DR);
70 }
71
72 ////////////////////////////////////////////////////////////////////////////////
73 /// @brief Returns the current CRC value.
74 /// @param None.
75 /// @retval 32-bit CRC
76 ////////////////////////////////////////////////////////////////////////////////
CRC_GetCRC(void)77 u32 CRC_GetCRC(void)
78 {
79 return (CRC->DR);
80 }
81
82 ////////////////////////////////////////////////////////////////////////////////
83 /// @brief Stores a 8-bit data in the Independent Data(ID) register.
84 /// @param id_value: 8-bit value to be stored in the ID register
85 /// @retval None.
86 ////////////////////////////////////////////////////////////////////////////////
CRC_SetIDRegister(u8 id_value)87 void CRC_SetIDRegister(u8 id_value)
88 {
89 CRC->IDR = id_value;
90 }
91
92 ////////////////////////////////////////////////////////////////////////////////
93 /// @brief Returns the 8-bit data stored in the Independent Data(ID) register
94 /// @param None.
95 /// @retval 8-bit value of the ID register
96 ////////////////////////////////////////////////////////////////////////////////
CRC_GetIDRegister()97 u8 CRC_GetIDRegister()
98 {
99 return (CRC->IDR);
100 }
101
102 /// @}
103
104 /// @}
105
106 /// @}
107
108
109