STM32F4xx_HAL_Driver  1.8.3
stm32f4xx_hal_rng.h
Go to the documentation of this file.
1 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32F4xx_HAL_RNG_H
21 #define STM32F4xx_HAL_RNG_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32f4xx_hal_def.h"
29 
34 #if defined (RNG)
35 
41 /* Exported types ------------------------------------------------------------*/
42 
58 typedef enum
59 {
64  HAL_RNG_STATE_ERROR = 0x04U
67 
75 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
76 typedef struct __RNG_HandleTypeDef
77 #else
78 typedef struct
79 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
80 {
81  RNG_TypeDef *Instance;
83  HAL_LockTypeDef Lock;
87  __IO uint32_t ErrorCode;
89  uint32_t RandomNumber;
91 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
92  void (* ReadyDataCallback)(struct __RNG_HandleTypeDef *hrng, uint32_t random32bit);
93  void (* ErrorCallback)(struct __RNG_HandleTypeDef *hrng);
95  void (* MspInitCallback)(struct __RNG_HandleTypeDef *hrng);
96  void (* MspDeInitCallback)(struct __RNG_HandleTypeDef *hrng);
97 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
98 
99 } RNG_HandleTypeDef;
100 
101 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
105 typedef enum
106 {
110  HAL_RNG_MSPDEINIT_CB_ID = 0x02U
113 
117 typedef void (*pRNG_CallbackTypeDef)(RNG_HandleTypeDef *hrng);
118 typedef void (*pRNG_ReadyDataCallbackTypeDef)(RNG_HandleTypeDef *hrng, uint32_t random32bit);
120 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
121 
130 /* Exported constants --------------------------------------------------------*/
138 #define RNG_IT_DRDY RNG_SR_DRDY
139 #define RNG_IT_CEI RNG_SR_CEIS
140 #define RNG_IT_SEI RNG_SR_SEIS
148 #define RNG_FLAG_DRDY RNG_SR_DRDY
149 #define RNG_FLAG_CECS RNG_SR_CECS
150 #define RNG_FLAG_SECS RNG_SR_SECS
158 #define HAL_RNG_ERROR_NONE 0x00000000U
159 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
160 #define HAL_RNG_ERROR_INVALID_CALLBACK 0x00000001U
161 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
162 #define HAL_RNG_ERROR_TIMEOUT 0x00000002U
163 #define HAL_RNG_ERROR_BUSY 0x00000004U
164 #define HAL_RNG_ERROR_SEED 0x00000008U
165 #define HAL_RNG_ERROR_CLOCK 0x00000010U
174 /* Exported macros -----------------------------------------------------------*/
183 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
184 #define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) do{ \
185  (__HANDLE__)->State = HAL_RNG_STATE_RESET; \
186  (__HANDLE__)->MspInitCallback = NULL; \
187  (__HANDLE__)->MspDeInitCallback = NULL; \
188  } while(0U)
189 #else
190 #define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RNG_STATE_RESET)
191 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
192 
198 #define __HAL_RNG_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_RNGEN)
199 
205 #define __HAL_RNG_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_RNGEN)
206 
217 #define __HAL_RNG_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
218 
227 #define __HAL_RNG_CLEAR_FLAG(__HANDLE__, __FLAG__) /* dummy macro */
228 
234 #define __HAL_RNG_ENABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_IE)
235 
241 #define __HAL_RNG_DISABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_IE)
242 
253 #define __HAL_RNG_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR & (__INTERRUPT__)) == (__INTERRUPT__))
254 
265 #define __HAL_RNG_CLEAR_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR) = ~(__INTERRUPT__))
266 
271 /* Exported functions --------------------------------------------------------*/
279 HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng);
280 HAL_StatusTypeDef HAL_RNG_DeInit(RNG_HandleTypeDef *hrng);
281 void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng);
282 void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng);
283 
284 /* Callbacks Register/UnRegister functions ***********************************/
285 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
286 HAL_StatusTypeDef HAL_RNG_RegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID,
287  pRNG_CallbackTypeDef pCallback);
288 HAL_StatusTypeDef HAL_RNG_UnRegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID);
289 
290 HAL_StatusTypeDef HAL_RNG_RegisterReadyDataCallback(RNG_HandleTypeDef *hrng, pRNG_ReadyDataCallbackTypeDef pCallback);
291 HAL_StatusTypeDef HAL_RNG_UnRegisterReadyDataCallback(RNG_HandleTypeDef *hrng);
292 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
293 
301 uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef
302  *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber() instead */
303 uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef
304  *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */
305 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);
306 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng);
307 uint32_t HAL_RNG_ReadLastRandomNumber(const RNG_HandleTypeDef *hrng);
308 
309 void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng);
310 void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng);
311 void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit);
312 
320 HAL_RNG_StateTypeDef HAL_RNG_GetState(const RNG_HandleTypeDef *hrng);
321 uint32_t HAL_RNG_GetError(const RNG_HandleTypeDef *hrng);
330 /* Private macros ------------------------------------------------------------*/
334 #define IS_RNG_IT(IT) (((IT) == RNG_IT_CEI) || \
335  ((IT) == RNG_IT_SEI))
336 
337 #define IS_RNG_FLAG(FLAG) (((FLAG) == RNG_FLAG_DRDY) || \
338  ((FLAG) == RNG_FLAG_CECS) || \
339  ((FLAG) == RNG_FLAG_SECS))
340 
349 #endif /* RNG */
350 
355 #ifdef __cplusplus
356 }
357 #endif
358 
359 
360 #endif /* STM32F4xx_HAL_RNG_H */
361 
RNG_TypeDef * Instance
uint32_t RandomNumber
__IO HAL_RNG_StateTypeDef State
ADC handle Structure definition.
HAL_StatusTypeDef HAL_RNG_UnRegisterReadyDataCallback(RNG_HandleTypeDef *hrng)
UnRegister the Data Ready RNG Callback Data Ready RNG Callback is redirected to the weak HAL_RNG_Read...
HAL_StatusTypeDef HAL_RNG_RegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID, pRNG_CallbackTypeDef pCallback)
Register a User RNG Callback To be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_RNG_UnRegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID)
Unregister an RNG Callback RNG callback is redirected to the weak predefined callback.
void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng)
DeInitializes the RNG MSP.
HAL_StatusTypeDef HAL_RNG_DeInit(RNG_HandleTypeDef *hrng)
DeInitializes the RNG peripheral.
HAL_StatusTypeDef HAL_RNG_RegisterReadyDataCallback(RNG_HandleTypeDef *hrng, pRNG_ReadyDataCallbackTypeDef pCallback)
Register Data Ready RNG Callback To be used instead of the weak HAL_RNG_ReadyDataCallback() predefine...
HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng)
Initializes the RNG peripheral and creates the associated handle.
void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng)
Initializes the RNG MSP.
HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng)
Generates a 32-bit random number in interrupt mode.
void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit)
Data Ready callback in non-blocking mode.
void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng)
Handles RNG interrupt request.
void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng)
RNG error callbacks.
HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit)
Generates a 32-bit random number.
uint32_t HAL_RNG_ReadLastRandomNumber(const RNG_HandleTypeDef *hrng)
Read latest generated random number.
uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef *hrng)
Returns generated random number in polling mode (Obsolete) Use HAL_RNG_GenerateRandomNumber() API ins...
uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef *hrng)
Returns a 32-bit random number with interrupt enabled (Obsolete), Use HAL_RNG_GenerateRandomNumber_IT...
uint32_t HAL_RNG_GetError(const RNG_HandleTypeDef *hrng)
Return the RNG handle error code.
HAL_RNG_StateTypeDef HAL_RNG_GetState(const RNG_HandleTypeDef *hrng)
Returns the RNG state.
HAL_RNG_StateTypeDef
@ HAL_RNG_STATE_READY
@ HAL_RNG_STATE_RESET
@ HAL_RNG_STATE_ERROR
@ HAL_RNG_STATE_TIMEOUT
@ HAL_RNG_STATE_BUSY
HAL_RNG_CallbackIDTypeDef
HAL RNG Callback ID enumeration definition.
void(* pRNG_ReadyDataCallbackTypeDef)(RNG_HandleTypeDef *hrng, uint32_t random32bit)
void(* pRNG_CallbackTypeDef)(RNG_HandleTypeDef *hrng)
HAL RNG Callback pointer definition.
@ HAL_RNG_MSPINIT_CB_ID
@ HAL_RNG_MSPDEINIT_CB_ID
@ HAL_RNG_ERROR_CB_ID
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_LockTypeDef
HAL Lock structures definition