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