Merge pull request #93 from zyp/master
[fw/stlink] / example / libs_stm / src / stm32l1xx / stm32l1xx_crc.c
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32l1xx_crc.c\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0\r
6   * @date    31-December-2010\r
7   * @brief   This file provides all the CRC firmware functions.\r
8   ******************************************************************************\r
9   * @attention\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 \r
22 /* Includes ------------------------------------------------------------------*/\r
23 #include "stm32l1xx_crc.h"\r
24 \r
25 /** @addtogroup STM32L1xx_StdPeriph_Driver\r
26   * @{\r
27   */\r
28 \r
29 /** @defgroup CRC \r
30   * @brief CRC driver modules\r
31   * @{\r
32   */\r
33 \r
34 /* Private typedef -----------------------------------------------------------*/\r
35 /* Private define ------------------------------------------------------------*/\r
36 /* Private macro -------------------------------------------------------------*/\r
37 /* Private variables ---------------------------------------------------------*/\r
38 /* Private function prototypes -----------------------------------------------*/\r
39 /* Private functions ---------------------------------------------------------*/\r
40 \r
41 /** @defgroup CRC_Private_Functions\r
42   * @{\r
43   */\r
44 \r
45 /**\r
46   * @brief  Resets the CRC Data register (DR).\r
47   * @param  None\r
48   * @retval None\r
49   */\r
50 void CRC_ResetDR(void)\r
51 {\r
52   /* Reset CRC generator */\r
53   CRC->CR = CRC_CR_RESET;\r
54 }\r
55 \r
56 /**\r
57   * @brief  Computes the 32-bit CRC of a given data word(32-bit).\r
58   * @param  Data: data word(32-bit) to compute its CRC\r
59   * @retval 32-bit CRC\r
60   */\r
61 uint32_t CRC_CalcCRC(uint32_t Data)\r
62 {\r
63   CRC->DR = Data;\r
64   \r
65   return (CRC->DR);\r
66 }\r
67 \r
68 /**\r
69   * @brief  Computes the 32-bit CRC of a given buffer of data word(32-bit).\r
70   * @param  pBuffer: pointer to the buffer containing the data to be computed\r
71   * @param  BufferLength: length of the buffer to be computed                                   \r
72   * @retval 32-bit CRC\r
73   */\r
74 uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength)\r
75 {\r
76   uint32_t index = 0;\r
77   \r
78   for(index = 0; index < BufferLength; index++)\r
79   {\r
80     CRC->DR = pBuffer[index];\r
81   }\r
82   return (CRC->DR);\r
83 }\r
84 \r
85 /**\r
86   * @brief  Returns the current CRC value.\r
87   * @param  None\r
88   * @retval 32-bit CRC\r
89   */\r
90 uint32_t CRC_GetCRC(void)\r
91 {\r
92   return (CRC->DR);\r
93 }\r
94 \r
95 /**\r
96   * @brief  Stores a 8-bit data in the Independent Data(ID) register.\r
97   * @param  IDValue: 8-bit value to be stored in the ID register                                        \r
98   * @retval None\r
99   */\r
100 void CRC_SetIDRegister(uint8_t IDValue)\r
101 {\r
102   CRC->IDR = IDValue;\r
103 }\r
104 \r
105 /**\r
106   * @brief  Returns the 8-bit data stored in the Independent Data(ID) register\r
107   * @param  None\r
108   * @retval 8-bit value of the ID register \r
109   */\r
110 uint8_t CRC_GetIDRegister(void)\r
111 {\r
112   return (CRC->IDR);\r
113 }\r
114 \r
115 /**\r
116   * @}\r
117   */\r
118 \r
119 /**\r
120   * @}\r
121   */\r
122 \r
123 /**\r
124   * @}\r
125   */\r
126 \r
127 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r