]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL/ST_Library/include/stm32f7xx_hal_crc.h
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL / ST_Library / include / stm32f7xx_hal_crc.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_crc.h\r
4   * @author  MCD Application Team\r
5   * @version V0.3.0\r
6   * @date    06-March-2015\r
7   * @brief   Header file of CRC HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */\r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_CRC_H\r
40 #define __STM32F7xx_HAL_CRC_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @defgroup CRC CRC\r
54   * @brief CRC HAL module driver\r
55   * @{\r
56   */\r
57 \r
58 /* Exported types ------------------------------------------------------------*/\r
59 /** @defgroup CRC_Exported_Types CRC Exported Types\r
60   * @{\r
61   */\r
62 \r
63 /** @defgroup CRC_Exported_Types_Group1 CRC State Structure definition \r
64   * @{\r
65   */\r
66 typedef enum\r
67 {\r
68   HAL_CRC_STATE_RESET     = 0x00,  /*!< CRC not yet initialized or disabled */\r
69   HAL_CRC_STATE_READY     = 0x01,  /*!< CRC initialized and ready for use   */\r
70   HAL_CRC_STATE_BUSY      = 0x02,  /*!< CRC internal process is ongoing     */\r
71   HAL_CRC_STATE_TIMEOUT   = 0x03,  /*!< CRC timeout state                   */\r
72   HAL_CRC_STATE_ERROR     = 0x04   /*!< CRC error state                     */\r
73 }HAL_CRC_StateTypeDef;\r
74 /** \r
75   * @}\r
76   */\r
77 \r
78 /** @defgroup CRC_Exported_Types_Group2 CRC Init Structure definition  \r
79   * @{\r
80   */\r
81 typedef struct\r
82 {\r
83   uint8_t DefaultPolynomialUse;       /*!< This parameter is a value of @ref CRC_Default_Polynomial and indicates if default polynomial is used.  \r
84                                             If set to DEFAULT_POLYNOMIAL_ENABLE, resort to default \r
85                                             X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 + X^4 + X^2+ X +1. \r
86                                             In that case, there is no need to set GeneratingPolynomial field.\r
87                                             If otherwise set to DEFAULT_POLYNOMIAL_DISABLE, GeneratingPolynomial and CRCLength fields must be set */\r
88 \r
89   uint8_t DefaultInitValueUse;        /*!< This parameter is a value of @ref CRC_Default_InitValue_Use and indicates if default init value is used. \r
90                                            If set to DEFAULT_INIT_VALUE_ENABLE, resort to default\r
91                                            0xFFFFFFFF value. In that case, there is no need to set InitValue field.   \r
92                                            If otherwise set to DEFAULT_INIT_VALUE_DISABLE,  InitValue field must be set */\r
93 \r
94   uint32_t GeneratingPolynomial;      /*!< Set CRC generating polynomial. 7, 8, 16 or 32-bit long value for a polynomial degree\r
95                                            respectively equal to 7, 8, 16 or 32. This field is written in normal representation, \r
96                                            e.g., for a polynomial of degree 7, X^7 + X^6 + X^5 + X^2 + 1 is written 0x65.\r
97                                            No need to specify it if DefaultPolynomialUse is set to DEFAULT_POLYNOMIAL_ENABLE   */                                                \r
98 \r
99   uint32_t CRCLength;                 /*!< This parameter is a value of @ref CRC_Polynomial_Sizes and indicates CRC length.\r
100                                            Value can be either one of\r
101                                            CRC_POLYLENGTH_32B                  (32-bit CRC)\r
102                                            CRC_POLYLENGTH_16B                  (16-bit CRC)\r
103                                            CRC_POLYLENGTH_8B                   (8-bit CRC)\r
104                                            CRC_POLYLENGTH_7B                   (7-bit CRC) */\r
105                                               \r
106   uint32_t InitValue;                 /*!< Init value to initiate CRC computation. No need to specify it if DefaultInitValueUse \r
107                                            is set to DEFAULT_INIT_VALUE_ENABLE   */                                                \r
108   \r
109   uint32_t InputDataInversionMode;    /*!< This parameter is a value of @ref CRCEx_Input_Data_Inversion and specifies input data inversion mode. \r
110                                            Can be either one of the following values \r
111                                            CRC_INPUTDATA_INVERSION_NONE      no input data inversion\r
112                                            CRC_INPUTDATA_INVERSION_BYTE      byte-wise inversion, 0x1A2B3C4D becomes 0x58D43CB2\r
113                                            CRC_INPUTDATA_INVERSION_HALFWORD  halfword-wise inversion, 0x1A2B3C4D becomes 0xD458B23C\r
114                                            CRC_INPUTDATA_INVERSION_WORD      word-wise inversion, 0x1A2B3C4D becomes 0xB23CD458 */  \r
115                                               \r
116   uint32_t OutputDataInversionMode;   /*!< This parameter is a value of @ref CRCEx_Output_Data_Inversion and specifies output data (i.e. CRC) inversion mode.\r
117                                             Can be either \r
118                                             CRC_OUTPUTDATA_INVERSION_DISABLE   no CRC inversion, or\r
119                                             CRC_OUTPUTDATA_INVERSION_ENABLE    CRC 0x11223344 is converted into 0x22CC4488 */\r
120 }CRC_InitTypeDef;\r
121 /** \r
122   * @}\r
123   */\r
124   \r
125 /** @defgroup CRC_Exported_Types_Group3 CRC Handle Structure definition   \r
126   * @{\r
127   */\r
128 typedef struct\r
129 {\r
130   CRC_TypeDef                 *Instance;   /*!< Register base address        */ \r
131   \r
132   CRC_InitTypeDef             Init;        /*!< CRC configuration parameters */\r
133   \r
134   HAL_LockTypeDef             Lock;        /*!< CRC Locking object           */\r
135     \r
136   __IO HAL_CRC_StateTypeDef   State;       /*!< CRC communication state      */\r
137   \r
138   uint32_t InputDataFormat;                /*!< This parameter is a value of @ref CRC_Input_Buffer_Format and specifies input data format. \r
139                                             Can be either \r
140                                             CRC_INPUTDATA_FORMAT_BYTES       input data is a stream of bytes (8-bit data)\r
141                                             CRC_INPUTDATA_FORMAT_HALFWORDS   input data is a stream of half-words (16-bit data)\r
142                                             CRC_INPUTDATA_FORMAT_WORDS       input data is a stream of words (32-bits data)                                                                                        \r
143                                            Note that constant CRC_INPUT_FORMAT_UNDEFINED is defined but an initialization error\r
144                                            must occur if InputBufferFormat is not one of the three values listed above  */ \r
145 }CRC_HandleTypeDef;\r
146 /** \r
147   * @}\r
148   */\r
149 \r
150 /**\r
151   * @}\r
152   */ \r
153   \r
154 /* Exported constants --------------------------------------------------------*/\r
155 /** @defgroup CRC_Exported_Constants   CRC exported constants\r
156   * @{\r
157   */\r
158   \r
159 /** @defgroup CRC_Default_Polynomial_Value    Default CRC generating polynomial\r
160   * @{\r
161   */\r
162 #define DEFAULT_CRC32_POLY      0x04C11DB7\r
163 \r
164 /**\r
165   * @}\r
166   */\r
167 \r
168 /** @defgroup CRC_Default_InitValue    Default CRC computation initialization value\r
169   * @{\r
170   */\r
171 #define DEFAULT_CRC_INITVALUE   0xFFFFFFFF\r
172 \r
173 /**\r
174   * @}\r
175   */\r
176 \r
177 /** @defgroup CRC_Default_Polynomial    Indicates whether or not default polynomial is used\r
178   * @{\r
179   */\r
180 #define DEFAULT_POLYNOMIAL_ENABLE       ((uint8_t)0x00)\r
181 #define DEFAULT_POLYNOMIAL_DISABLE      ((uint8_t)0x01)\r
182 \r
183 \r
184 /**\r
185   * @}\r
186   */\r
187  \r
188 /** @defgroup CRC_Default_InitValue_Use    Indicates whether or not default init value is used\r
189   * @{\r
190   */                                      \r
191 #define DEFAULT_INIT_VALUE_ENABLE      ((uint8_t)0x00)\r
192 #define DEFAULT_INIT_VALUE_DISABLE     ((uint8_t)0x01)\r
193 \r
194 /**\r
195   * @}\r
196   */\r
197 \r
198 /** @defgroup CRC_Polynomial_Sizes Polynomial sizes to configure the IP\r
199   * @{\r
200   */\r
201 #define CRC_POLYLENGTH_32B                  ((uint32_t)0x00000000)\r
202 #define CRC_POLYLENGTH_16B                  ((uint32_t)CRC_CR_POLYSIZE_0)\r
203 #define CRC_POLYLENGTH_8B                   ((uint32_t)CRC_CR_POLYSIZE_1)\r
204 #define CRC_POLYLENGTH_7B                   ((uint32_t)CRC_CR_POLYSIZE)\r
205 /**\r
206   * @}\r
207   */\r
208 \r
209 /** @defgroup CRC_Polynomial_Size_Definitions CRC polynomial possible sizes actual definitions\r
210   * @{\r
211   */\r
212 #define HAL_CRC_LENGTH_32B     32\r
213 #define HAL_CRC_LENGTH_16B     16\r
214 #define HAL_CRC_LENGTH_8B       8\r
215 #define HAL_CRC_LENGTH_7B       7\r
216 \r
217 /**\r
218   * @}\r
219   */  \r
220 \r
221 /** @defgroup CRC_Input_Buffer_Format CRC input buffer format\r
222   * @{\r
223   */\r
224 /* WARNING: CRC_INPUT_FORMAT_UNDEFINED is created for reference purposes but\r
225  * an error is triggered in HAL_CRC_Init() if InputDataFormat field is set \r
226  * to CRC_INPUT_FORMAT_UNDEFINED: the format MUST be defined by the user for \r
227  * the CRC APIs to provide a correct result */   \r
228 #define CRC_INPUTDATA_FORMAT_UNDEFINED             ((uint32_t)0x00000000)\r
229 #define CRC_INPUTDATA_FORMAT_BYTES                 ((uint32_t)0x00000001)\r
230 #define CRC_INPUTDATA_FORMAT_HALFWORDS             ((uint32_t)0x00000002)\r
231 #define CRC_INPUTDATA_FORMAT_WORDS                 ((uint32_t)0x00000003)\r
232 /** \r
233   * @}\r
234   */   \r
235 \r
236 /** \r
237   * @}\r
238   */ \r
239 /* Exported macros -----------------------------------------------------------*/\r
240 \r
241 /** @defgroup CRC_Exported_Macros CRC exported macros\r
242   * @{\r
243   */\r
244 \r
245 /** @brief Reset CRC handle state\r
246   * @param  __HANDLE__: CRC handle.\r
247   * @retval None\r
248   */\r
249 #define __HAL_CRC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRC_STATE_RESET)\r
250 \r
251 /**\r
252   * @brief  Reset CRC Data Register.\r
253   * @param  __HANDLE__: CRC handle\r
254   * @retval None.\r
255   */\r
256 #define __HAL_CRC_DR_RESET(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRC_CR_RESET)\r
257 \r
258 /**\r
259   * @brief  Set CRC INIT non-default value\r
260   * @param  __HANDLE__    : CRC handle\r
261   * @param  __INIT__      : 32-bit initial value  \r
262   * @retval None.\r
263   */\r
264 #define __HAL_CRC_INITIALCRCVALUE_CONFIG(__HANDLE__, __INIT__) ((__HANDLE__)->Instance->INIT = (__INIT__))    \r
265 \r
266 /**\r
267   * @brief Stores a 8-bit data in the Independent Data(ID) register.\r
268   * @param __HANDLE__: CRC handle\r
269   * @param __VALUE__: 8-bit value to be stored in the ID register\r
270   * @retval None\r
271   */\r
272 #define __HAL_CRC_SET_IDR(__HANDLE__, __VALUE__) (MODIFY_REG((__HANDLE__)->Instance->IDR, CRC_IDR_IDR, (__VALUE__))\r
273 \r
274 /**\r
275   * @brief Returns the 8-bit data stored in the Independent Data(ID) register.\r
276   * @param __HANDLE__: CRC handle\r
277   * @retval 8-bit value of the ID register \r
278   */\r
279 #define __HAL_CRC_GET_IDR(__HANDLE__) (((__HANDLE__)->Instance->IDR) & CRC_IDR_IDR)\r
280 /**\r
281   * @}\r
282   */\r
283 \r
284 \r
285 /* Include CRC HAL Extension module */\r
286 #include "stm32f7xx_hal_crc_ex.h"\r
287 \r
288 /* Exported functions --------------------------------------------------------*/\r
289 /** @defgroup CRC_Exported_Functions CRC Exported Functions\r
290   * @{\r
291   */\r
292 \r
293 /** @defgroup CRC_Exported_Functions_Group1 Initialization/de-initialization functions\r
294   * @{\r
295   */\r
296 /* Initialization and de-initialization functions  ****************************/\r
297 HAL_StatusTypeDef HAL_CRC_Init(CRC_HandleTypeDef *hcrc);\r
298 HAL_StatusTypeDef HAL_CRC_DeInit (CRC_HandleTypeDef *hcrc);\r
299 void HAL_CRC_MspInit(CRC_HandleTypeDef *hcrc);\r
300 void HAL_CRC_MspDeInit(CRC_HandleTypeDef *hcrc);\r
301 /**\r
302   * @}\r
303   */\r
304 \r
305 /* Aliases for inter STM32 series compatibility */\r
306 #define HAL_CRC_Input_Data_Reverse   HAL_CRCEx_Input_Data_Reverse\r
307 #define HAL_CRC_Output_Data_Reverse  HAL_CRCEx_Output_Data_Reverse\r
308 \r
309 /** @defgroup CRC_Exported_Functions_Group2 Peripheral Control functions\r
310   * @{\r
311   */\r
312 /* Peripheral Control functions ***********************************************/\r
313 uint32_t HAL_CRC_Accumulate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength);\r
314 uint32_t HAL_CRC_Calculate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength);\r
315 /**\r
316   * @}\r
317   */\r
318 \r
319 /** @defgroup CRC_Exported_Functions_Group3 Peripheral State functions\r
320   * @{\r
321   */\r
322 /* Peripheral State and Error functions ***************************************/\r
323 HAL_CRC_StateTypeDef HAL_CRC_GetState(CRC_HandleTypeDef *hcrc);\r
324 /**\r
325   * @}\r
326   */\r
327 \r
328 /**\r
329   * @}\r
330   */\r
331 \r
332 \r
333 /* Private types -------------------------------------------------------------*/\r
334 /** @defgroup CRC_Private_Types CRC Private Types\r
335   * @{\r
336   */\r
337 \r
338 /**\r
339   * @}\r
340   */ \r
341 \r
342 /* Private defines -----------------------------------------------------------*/\r
343 /** @defgroup CRC_Private_Defines CRC Private Defines\r
344   * @{\r
345   */\r
346 \r
347 /**\r
348   * @}\r
349   */ \r
350 \r
351 /* Private variables ---------------------------------------------------------*/\r
352 /** @defgroup CRC_Private_Variables CRC Private Variables\r
353   * @{\r
354   */\r
355 \r
356 /**\r
357   * @}\r
358   */ \r
359 \r
360 /* Private constants ---------------------------------------------------------*/\r
361 /** @defgroup CRC_Private_Constants CRC Private Constants\r
362   * @{\r
363   */\r
364 \r
365 /**\r
366   * @}\r
367   */ \r
368 \r
369 /* Private macros ------------------------------------------------------------*/\r
370 /** @defgroup CRC_Private_Macros CRC Private Macros\r
371   * @{\r
372   */\r
373 #define IS_DEFAULT_POLYNOMIAL(__DEFAULT__) (((__DEFAULT__) == DEFAULT_POLYNOMIAL_ENABLE) || \\r
374                                             ((__DEFAULT__) == DEFAULT_POLYNOMIAL_DISABLE))\r
375 #define IS_DEFAULT_INIT_VALUE(__VALUE__)  (((__VALUE__) == DEFAULT_INIT_VALUE_ENABLE) || \\r
376                                            ((__VALUE__) == DEFAULT_INIT_VALUE_DISABLE))\r
377 #define IS_CRC_POL_LENGTH(__LENGTH__)     (((__LENGTH__) == CRC_POLYLENGTH_32B) || \\r
378                                            ((__LENGTH__) == CRC_POLYLENGTH_16B) || \\r
379                                            ((__LENGTH__) == CRC_POLYLENGTH_8B)  || \\r
380                                            ((__LENGTH__) == CRC_POLYLENGTH_7B))\r
381 #define IS_CRC_INPUTDATA_FORMAT(__FORMAT__)       (((__FORMAT__) == CRC_INPUTDATA_FORMAT_BYTES) || \\r
382                                                    ((__FORMAT__) == CRC_INPUTDATA_FORMAT_HALFWORDS) || \\r
383                                                    ((__FORMAT__) == CRC_INPUTDATA_FORMAT_WORDS))\r
384 \r
385 \r
386 /**\r
387   * @}\r
388   */\r
389 \r
390 /* Private functions prototypes ----------------------------------------------*/\r
391 /** @defgroup CRC_Private_Functions_Prototypes CRC Private Functions Prototypes\r
392   * @{\r
393   */\r
394 \r
395 /**\r
396   * @}\r
397   */\r
398 \r
399 /* Private functions ---------------------------------------------------------*/\r
400 /** @defgroup CRC_Private_Functions CRC Private Functions\r
401   * @{\r
402   */\r
403 \r
404 /**\r
405   * @}\r
406   */\r
407 \r
408 /**\r
409   * @}\r
410   */ \r
411 \r
412 /**\r
413   * @}\r
414   */\r
415   \r
416 #ifdef __cplusplus\r
417 }\r
418 #endif\r
419 \r
420 #endif /* __STM32F7xx_HAL_CRC_H */\r
421 \r
422 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
423 \r