DSO138_SourceCodes_v037.rar
[DSO138] / Libraries / STM32F10x_StdPeriph_Driver / src / stm32f10x_crc.c
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f10x_crc.c\r
4   * @author  MCD Application Team\r
5   * @version V3.3.0\r
6   * @date    04/16/2010\r
7   * @brief   This file provides all the CRC firmware functions.\r
8   ******************************************************************************\r
9   * @copy\r
10   *\r
11   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
12   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
13   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
14   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
15   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
16   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
17   *\r
18   * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>\r
19   */ \r
20 \r
21 /* Includes ------------------------------------------------------------------*/\r
22 #include "stm32f10x_crc.h"\r
23 \r
24 /** @addtogroup STM32F10x_StdPeriph_Driver\r
25   * @{\r
26   */\r
27 \r
28 /** @defgroup CRC \r
29   * @brief CRC driver modules\r
30   * @{\r
31   */\r
32 \r
33 /** @defgroup CRC_Private_TypesDefinitions\r
34   * @{\r
35   */\r
36 \r
37 /**\r
38   * @}\r
39   */\r
40 \r
41 /** @defgroup CRC_Private_Defines\r
42   * @{\r
43   */\r
44 \r
45 /* CR register bit mask */\r
46 \r
47 #define CR_RESET_Set    ((uint32_t)0x00000001)\r
48 \r
49 /**\r
50   * @}\r
51   */\r
52 \r
53 /** @defgroup CRC_Private_Macros\r
54   * @{\r
55   */\r
56 \r
57 /**\r
58   * @}\r
59   */\r
60 \r
61 /** @defgroup CRC_Private_Variables\r
62   * @{\r
63   */\r
64 \r
65 /**\r
66   * @}\r
67   */\r
68 \r
69 /** @defgroup CRC_Private_FunctionPrototypes\r
70   * @{\r
71   */\r
72 \r
73 /**\r
74   * @}\r
75   */\r
76 \r
77 /** @defgroup CRC_Private_Functions\r
78   * @{\r
79   */\r
80 \r
81 /**\r
82   * @brief  Resets the CRC Data register (DR).\r
83   * @param  None\r
84   * @retval None\r
85   */\r
86 void CRC_ResetDR(void)\r
87 {\r
88   /* Reset CRC generator */\r
89   CRC->CR = CR_RESET_Set;\r
90 }\r
91 \r
92 /**\r
93   * @brief  Computes the 32-bit CRC of a given data word(32-bit).\r
94   * @param  Data: data word(32-bit) to compute its CRC\r
95   * @retval 32-bit CRC\r
96   */\r
97 uint32_t CRC_CalcCRC(uint32_t Data)\r
98 {\r
99   CRC->DR = Data;\r
100   \r
101   return (CRC->DR);\r
102 }\r
103 \r
104 /**\r
105   * @brief  Computes the 32-bit CRC of a given buffer of data word(32-bit).\r
106   * @param  pBuffer: pointer to the buffer containing the data to be computed\r
107   * @param  BufferLength: length of the buffer to be computed                                   \r
108   * @retval 32-bit CRC\r
109   */\r
110 uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength)\r
111 {\r
112   uint32_t index = 0;\r
113   \r
114   for(index = 0; index < BufferLength; index++)\r
115   {\r
116     CRC->DR = pBuffer[index];\r
117   }\r
118   return (CRC->DR);\r
119 }\r
120 \r
121 /**\r
122   * @brief  Returns the current CRC value.\r
123   * @param  None\r
124   * @retval 32-bit CRC\r
125   */\r
126 uint32_t CRC_GetCRC(void)\r
127 {\r
128   return (CRC->DR);\r
129 }\r
130 \r
131 /**\r
132   * @brief  Stores a 8-bit data in the Independent Data(ID) register.\r
133   * @param  IDValue: 8-bit value to be stored in the ID register                                        \r
134   * @retval None\r
135   */\r
136 void CRC_SetIDRegister(uint8_t IDValue)\r
137 {\r
138   CRC->IDR = IDValue;\r
139 }\r
140 \r
141 /**\r
142   * @brief  Returns the 8-bit data stored in the Independent Data(ID) register\r
143   * @param  None\r
144   * @retval 8-bit value of the ID register \r
145   */\r
146 uint8_t CRC_GetIDRegister(void)\r
147 {\r
148   return (CRC->IDR);\r
149 }\r
150 \r
151 /**\r
152   * @}\r
153   */\r
154 \r
155 /**\r
156   * @}\r
157   */\r
158 \r
159 /**\r
160   * @}\r
161   */\r
162 \r
163 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r