STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_rng.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef __STM32L4xx_HAL_RNG_H
22 #define __STM32L4xx_HAL_RNG_H
23 
24 #ifdef __cplusplus
25  extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
44 #if defined(RNG_CR_CED)
45 
48 typedef struct
49 {
50  uint32_t ClockErrorDetection;
51 }RNG_InitTypeDef;
52 #endif /* defined(RNG_CR_CED) */
53 
57 typedef enum
58 {
66 
70 typedef struct __RNG_HandleTypeDef
71 {
72  RNG_TypeDef *Instance;
74 #if defined(RNG_CR_CED)
75  RNG_InitTypeDef Init;
76 #endif /* defined(RNG_CR_CED) */
77 
82  __IO uint32_t ErrorCode;
84  uint32_t RandomNumber;
86 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
87  void (* ReadyDataCallback)(struct __RNG_HandleTypeDef *hrng, uint32_t random32bit);
88  void (* ErrorCallback)(struct __RNG_HandleTypeDef *hrng);
90  void (* MspInitCallback)(struct __RNG_HandleTypeDef *hrng);
91  void (* MspDeInitCallback)(struct __RNG_HandleTypeDef *hrng);
92 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
93 
95 
96 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
97 
100 typedef enum
101 {
108 
112 typedef void (*pRNG_CallbackTypeDef)(RNG_HandleTypeDef *hrng);
113 typedef void (*pRNG_ReadyDataCallbackTypeDef)(RNG_HandleTypeDef * hrng, uint32_t random32bit);
115 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
116 
121 /* Exported constants --------------------------------------------------------*/
129 #define RNG_IT_DRDY RNG_SR_DRDY
130 #define RNG_IT_CEI RNG_SR_CEIS
131 #define RNG_IT_SEI RNG_SR_SEIS
139 #define RNG_FLAG_DRDY RNG_SR_DRDY
140 #define RNG_FLAG_CECS RNG_SR_CECS
141 #define RNG_FLAG_SECS RNG_SR_SECS
146 #if defined(RNG_CR_CED)
147 
150 #define RNG_CED_ENABLE ((uint32_t)0x00000000)
151 #define RNG_CED_DISABLE RNG_CR_CED
155 #endif /* defined(RNG_CR_CED) */
156 
160 #define HAL_RNG_ERROR_NONE ((uint32_t)0x00000000U)
161 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
162 #define HAL_RNG_ERROR_INVALID_CALLBACK ((uint32_t)0x00000001U)
163 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
164 
172 /* Exported macros -----------------------------------------------------------*/
181 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
182 #define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) do{ \
183  (__HANDLE__)->State = HAL_RNG_STATE_RESET; \
184  (__HANDLE__)->MspInitCallback = NULL; \
185  (__HANDLE__)->MspDeInitCallback = NULL; \
186  } while(0U)
187 #else
188 #define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RNG_STATE_RESET)
189 #endif /*USE_HAL_RNG_REGISTER_CALLBACKS */
190 
196 #define __HAL_RNG_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_RNGEN)
197 
203 #define __HAL_RNG_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_RNGEN)
204 
215 #define __HAL_RNG_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
216 
225 #define __HAL_RNG_CLEAR_FLAG(__HANDLE__, __FLAG__) /* dummy macro */
226 
232 #define __HAL_RNG_ENABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_IE)
233 
239 #define __HAL_RNG_DISABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_IE)
240 
251 #define __HAL_RNG_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR & (__INTERRUPT__)) == (__INTERRUPT__))
252 
263 #define __HAL_RNG_CLEAR_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR) = ~(__INTERRUPT__))
264 
270 /* Exported functions --------------------------------------------------------*/
275 /* Initialization and de-initialization functions ******************************/
279 HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng);
280 HAL_StatusTypeDef HAL_RNG_DeInit (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, pRNG_CallbackTypeDef pCallback);
287 HAL_StatusTypeDef HAL_RNG_UnRegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID);
288 
291 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
292 
297 /* Peripheral Control functions ************************************************/
301 uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber() instead */
302 uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */
303 
304 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);
305 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng);
307 
310 void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef* hrng, uint32_t random32bit);
315 /* Peripheral State functions **************************************************/
320 uint32_t HAL_RNG_GetError(RNG_HandleTypeDef *hrng);
329 /* Private types -------------------------------------------------------------*/
330 /* Private defines -----------------------------------------------------------*/
331 /* Private variables ---------------------------------------------------------*/
332 /* Private constants ---------------------------------------------------------*/
333 /* Private macros ------------------------------------------------------------*/
338 #if defined(RNG_CR_CED)
339 
344 #define IS_RNG_CED(__MODE__) (((__MODE__) == RNG_CED_ENABLE) || \
345  ((__MODE__) == RNG_CED_DISABLE))
346 #endif /* defined(RNG_CR_CED) */
347 
351 /* Private functions prototypes ----------------------------------------------*/
352 
361 #ifdef __cplusplus
362 }
363 #endif
364 
365 #endif /* __STM32L4xx_HAL_RNG_H */
366 
367 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void(* ErrorCallback)(struct __RNG_HandleTypeDef *hrng)
void(* pRNG_ReadyDataCallbackTypeDef)(RNG_HandleTypeDef *hrng, uint32_t random32bit)
void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit)
Data Ready callback in non-blocking mode.
RNG Handle Structure definition.
HAL_RNG_CallbackIDTypeDef
HAL RNG Callback ID enumeration definition.
void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng)
RNG error callback.
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...
__IO HAL_RNG_StateTypeDef State
uint32_t HAL_RNG_GetError(RNG_HandleTypeDef *hrng)
Return the RNG handle error code.
void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng)
Handle RNG interrupt request.
RNG_InitTypeDef Init
HAL_RNG_StateTypeDef
RNG HAL State Structure definition.
uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef *hrng)
Return generated random number in polling mode (Obsolete).
HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng)
Generate a 32-bit random number in interrupt mode.
void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng)
DeInitialize the RNG MSP.
struct __RNG_HandleTypeDef RNG_HandleTypeDef
RNG Handle Structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef HAL_RNG_DeInit(RNG_HandleTypeDef *hrng)
DeInitialize the RNG peripheral.
void(* pRNG_CallbackTypeDef)(RNG_HandleTypeDef *hrng)
HAL RNG Callback pointer 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...
uint32_t HAL_RNG_ReadLastRandomNumber(RNG_HandleTypeDef *hrng)
Read latest generated random number.
HAL_StatusTypeDef HAL_RNG_UnRegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID)
Unregister an RNG Callback RNG callabck is redirected to the weak predefined callback.
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.
void(* MspDeInitCallback)(struct __RNG_HandleTypeDef *hrng)
HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng)
Initialize the RNG peripheral and initialize the associated handle.
uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef *hrng)
Return a 32-bit random number with interrupt enabled (Obsolete).
HAL_RNG_StateTypeDef HAL_RNG_GetState(RNG_HandleTypeDef *hrng)
Return the RNG handle state.
void(* MspInitCallback)(struct __RNG_HandleTypeDef *hrng)
RNG_TypeDef * Instance
HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit)
Generate a 32-bit random number.
HAL_LockTypeDef Lock
HAL_LockTypeDef
HAL Lock structures definition.
void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng)
Initialize the RNG MSP.
void(* ReadyDataCallback)(struct __RNG_HandleTypeDef *hrng, uint32_t random32bit)
__IO uint32_t ErrorCode