]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL/ST_Library/include/stm32f7xx_hal_rng.h
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL / ST_Library / include / stm32f7xx_hal_rng.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_rng.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 RNG 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_RNG_H\r
40 #define __STM32F7xx_HAL_RNG_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 #if defined(STM32F756xx) || defined(STM32F746xx)\r
47     \r
48       \r
49 /* Includes ------------------------------------------------------------------*/\r
50 #include "stm32f7xx_hal_def.h"\r
51 \r
52 /** @addtogroup STM32F7xx_HAL_Driver\r
53   * @{\r
54   */\r
55 \r
56 /** @defgroup RNG RNG\r
57   * @brief RNG HAL module driver\r
58   * @{\r
59   */\r
60 \r
61 /* Exported types ------------------------------------------------------------*/ \r
62 \r
63 /** @defgroup RNG_Exported_Types RNG Exported Types\r
64   * @{\r
65   */\r
66 \r
67 /** @defgroup RNG_Exported_Types_Group1 RNG State Structure definition \r
68   * @{\r
69   */\r
70 typedef enum\r
71 {\r
72   HAL_RNG_STATE_RESET     = 0x00,  /*!< RNG not yet initialized or disabled */\r
73   HAL_RNG_STATE_READY     = 0x01,  /*!< RNG initialized and ready for use   */\r
74   HAL_RNG_STATE_BUSY      = 0x02,  /*!< RNG internal process is ongoing     */ \r
75   HAL_RNG_STATE_TIMEOUT   = 0x03,  /*!< RNG timeout state                   */\r
76   HAL_RNG_STATE_ERROR     = 0x04   /*!< RNG error state                     */\r
77     \r
78 }HAL_RNG_StateTypeDef;\r
79 \r
80 /** \r
81   * @}\r
82   */\r
83 \r
84 /** @defgroup RNG_Exported_Types_Group2 RNG Handle Structure definition   \r
85   * @{\r
86   */ \r
87 typedef struct\r
88 {\r
89   RNG_TypeDef                 *Instance;    /*!< Register base address   */\r
90 \r
91   uint32_t                    RandomNumber; /*!< Last Generated random number */        \r
92   \r
93   HAL_LockTypeDef             Lock;         /*!< RNG locking object      */\r
94   \r
95   __IO HAL_RNG_StateTypeDef   State;        /*!< RNG communication state */\r
96   \r
97 }RNG_HandleTypeDef;\r
98 \r
99 /** \r
100   * @}\r
101   */\r
102 \r
103 /**\r
104   * @}\r
105   */ \r
106    \r
107 /* Exported constants --------------------------------------------------------*/\r
108 \r
109 /** @defgroup RNG_Exported_Constants RNG Exported Constants\r
110   * @{\r
111   */\r
112 \r
113 /** @defgroup RNG_Exported_Constants_Group1 RNG Interrupt definition\r
114   * @{\r
115   */\r
116 #define RNG_IT_DRDY  RNG_SR_DRDY  /*!< Data Ready interrupt  */\r
117 #define RNG_IT_CEI   RNG_SR_CEIS  /*!< Clock error interrupt */\r
118 #define RNG_IT_SEI   RNG_SR_SEIS  /*!< Seed error interrupt  */\r
119 /**\r
120   * @}\r
121   */\r
122 \r
123 /** @defgroup RNG_Exported_Constants_Group2 RNG Flag definition\r
124   * @{\r
125   */\r
126 #define RNG_FLAG_DRDY   RNG_SR_DRDY  /*!< Data ready                 */\r
127 #define RNG_FLAG_CECS   RNG_SR_CECS  /*!< Clock error current status */\r
128 #define RNG_FLAG_SECS   RNG_SR_SECS  /*!< Seed error current status  */\r
129 \r
130 /**\r
131   * @}\r
132   */\r
133 \r
134 /**\r
135   * @}\r
136   */ \r
137   \r
138 /* Exported macros -----------------------------------------------------------*/\r
139 \r
140 /** @defgroup RNG_Exported_Macros RNG Exported Macros\r
141   * @{\r
142   */\r
143 \r
144 /** @brief Reset RNG handle state\r
145   * @param  __HANDLE__: RNG Handle\r
146   * @retval None\r
147   */\r
148 #define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RNG_STATE_RESET)\r
149 \r
150 /**\r
151   * @brief  Enables the RNG peripheral.\r
152   * @param  __HANDLE__: RNG Handle\r
153   * @retval None\r
154   */\r
155 #define __HAL_RNG_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |=  RNG_CR_RNGEN)\r
156 \r
157 /**\r
158   * @brief  Disables the RNG peripheral.\r
159   * @param  __HANDLE__: RNG Handle\r
160   * @retval None\r
161   */\r
162 #define __HAL_RNG_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_RNGEN)\r
163 \r
164 /**\r
165   * @brief  Check the selected RNG flag status.\r
166   * @param  __HANDLE__: RNG Handle\r
167   * @param  __FLAG__: RNG flag\r
168   *          This parameter can be one of the following values:\r
169   *            @arg RNG_FLAG_DRDY: Data ready                \r
170   *            @arg RNG_FLAG_CECS: Clock error current status\r
171   *            @arg RNG_FLAG_SECS: Seed error current status \r
172   * @retval The new state of __FLAG__ (SET or RESET).\r
173   */\r
174 #define __HAL_RNG_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))\r
175 \r
176 /**\r
177   * @brief  Clears the selected RNG flag status.\r
178   * @param  __HANDLE__: RNG handle\r
179   * @param  __FLAG__: RNG flag to clear  \r
180   * @note   WARNING: This is a dummy macro for HAL code alignment,\r
181   *         flags RNG_FLAG_DRDY, RNG_FLAG_CECS and RNG_FLAG_SECS are read-only.\r
182   * @retval None\r
183   */\r
184 #define __HAL_RNG_CLEAR_FLAG(__HANDLE__, __FLAG__)                      /* dummy  macro */\r
185 \r
186 \r
187 \r
188 /**\r
189   * @brief  Enables the RNG interrupts.\r
190   * @param  __HANDLE__: RNG Handle\r
191   * @retval None\r
192   */\r
193 #define __HAL_RNG_ENABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR |=  RNG_CR_IE)\r
194     \r
195 /**\r
196   * @brief  Disables the RNG interrupts.\r
197   * @param  __HANDLE__: RNG Handle\r
198   * @retval None\r
199   */\r
200 #define __HAL_RNG_DISABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_IE)\r
201 \r
202 /**\r
203   * @brief  Checks whether the specified RNG interrupt has occurred or not.\r
204   * @param  __HANDLE__: RNG Handle\r
205   * @param  __INTERRUPT__: specifies the RNG interrupt status flag to check.\r
206   *         This parameter can be one of the following values:\r
207   *            @arg RNG_IT_DRDY: Data ready interrupt              \r
208   *            @arg RNG_IT_CEI: Clock error interrupt\r
209   *            @arg RNG_IT_SEI: Seed error interrupt\r
210   * @retval The new state of __INTERRUPT__ (SET or RESET).\r
211   */\r
212 #define __HAL_RNG_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR & (__INTERRUPT__)) == (__INTERRUPT__))   \r
213 \r
214 /**\r
215   * @brief  Clear the RNG interrupt status flags.\r
216   * @param  __HANDLE__: RNG Handle\r
217   * @param  __INTERRUPT__: specifies the RNG interrupt status flag to clear.\r
218   *          This parameter can be one of the following values:            \r
219   *            @arg RNG_IT_CEI: Clock error interrupt\r
220   *            @arg RNG_IT_SEI: Seed error interrupt\r
221   * @note   RNG_IT_DRDY flag is read-only, reading RNG_DR register automatically clears RNG_IT_DRDY.          \r
222   * @retval None\r
223   */\r
224 #define __HAL_RNG_CLEAR_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR) = ~(__INTERRUPT__))\r
225 \r
226 /**\r
227   * @}\r
228   */ \r
229 \r
230 /* Exported functions --------------------------------------------------------*/\r
231 /** @defgroup RNG_Exported_Functions RNG Exported Functions\r
232   * @{\r
233   */\r
234 \r
235 /** @defgroup RNG_Exported_Functions_Group1 Initialization and de-initialization functions\r
236   * @{\r
237   */  \r
238 HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng);\r
239 HAL_StatusTypeDef HAL_RNG_DeInit (RNG_HandleTypeDef *hrng);\r
240 void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng);\r
241 void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng);\r
242 \r
243 /**\r
244   * @}\r
245   */ \r
246 \r
247 /** @defgroup RNG_Exported_Functions_Group2 Peripheral Control functions\r
248   * @{\r
249   */\r
250 uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef *hrng);    /* Obsolete, use HAL_RNG_GenerateRandomNumber() instead    */\r
251 uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */\r
252 \r
253 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);\r
254 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng);\r
255 uint32_t HAL_RNG_ReadLastRandomNumber(RNG_HandleTypeDef *hrng);\r
256 \r
257 void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng);\r
258 void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng);\r
259 void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef* hrng, uint32_t random32bit);\r
260 \r
261 /**\r
262   * @}\r
263   */ \r
264 \r
265 /** @defgroup RNG_Exported_Functions_Group3 Peripheral State functions\r
266   * @{\r
267   */\r
268 HAL_RNG_StateTypeDef HAL_RNG_GetState(RNG_HandleTypeDef *hrng);\r
269 \r
270 /**\r
271   * @}\r
272   */\r
273   \r
274 /**\r
275   * @}\r
276   */ \r
277 \r
278 /* Private types -------------------------------------------------------------*/\r
279 /** @defgroup RNG_Private_Types RNG Private Types\r
280   * @{\r
281   */\r
282 \r
283 /**\r
284   * @}\r
285   */ \r
286 \r
287 /* Private defines -----------------------------------------------------------*/\r
288 /** @defgroup RNG_Private_Defines RNG Private Defines\r
289   * @{\r
290   */\r
291 \r
292 /**\r
293   * @}\r
294   */ \r
295           \r
296 /* Private variables ---------------------------------------------------------*/\r
297 /** @defgroup RNG_Private_Variables RNG Private Variables\r
298   * @{\r
299   */\r
300 \r
301 /**\r
302   * @}\r
303   */ \r
304 \r
305 /* Private constants ---------------------------------------------------------*/\r
306 /** @defgroup RNG_Private_Constants RNG Private Constants\r
307   * @{\r
308   */\r
309 \r
310 /**\r
311   * @}\r
312   */ \r
313 \r
314 /* Private macros ------------------------------------------------------------*/\r
315 /** @defgroup RNG_Private_Macros RNG Private Macros\r
316   * @{\r
317   */\r
318 #define IS_RNG_IT(IT) (((IT) == RNG_IT_CEI) || \\r
319                        ((IT) == RNG_IT_SEI))\r
320 \r
321 #define IS_RNG_FLAG(FLAG) (((FLAG) == RNG_FLAG_DRDY) || \\r
322                            ((FLAG) == RNG_FLAG_CECS) || \\r
323                            ((FLAG) == RNG_FLAG_SECS))\r
324 \r
325 /**\r
326   * @}\r
327   */ \r
328 \r
329 /* Private functions prototypes ----------------------------------------------*/\r
330 /** @defgroup RNG_Private_Functions_Prototypes RNG Private Functions Prototypes\r
331   * @{\r
332   */\r
333 \r
334 /**\r
335   * @}\r
336   */\r
337 \r
338 /* Private functions ---------------------------------------------------------*/\r
339 /** @defgroup RNG_Private_Functions RNG Private Functions\r
340   * @{\r
341   */\r
342 \r
343 /**\r
344   * @}\r
345   */\r
346 \r
347 /**\r
348   * @}\r
349   */ \r
350 \r
351 /**\r
352   * @}\r
353   */ \r
354 \r
355 #endif /* STM32F756xx || STM32F746xx */\r
356 \r
357 #ifdef __cplusplus\r
358 }\r
359 #endif\r
360 \r
361 #endif /* __STM32F7xx_HAL_RNG_H */\r
362 \r
363 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r