STM32F4xx HAL Documentation
Hardware Abstraction Layer for STM32F4 familiy
Loading...
Searching...
No Matches
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
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32f4xx_hal_def.h"
29
34#if defined (RNG)
35
41/* Exported types ------------------------------------------------------------*/
42
58typedef enum
59{
60 HAL_RNG_STATE_RESET = 0x00U,
61 HAL_RNG_STATE_READY = 0x01U,
62 HAL_RNG_STATE_BUSY = 0x02U,
63 HAL_RNG_STATE_TIMEOUT = 0x03U,
64 HAL_RNG_STATE_ERROR = 0x04U
66} HAL_RNG_StateTypeDef;
67
75#if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
76typedef struct __RNG_HandleTypeDef
77#else
78typedef struct
79#endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
80{
81 RNG_TypeDef *Instance;
83 HAL_LockTypeDef Lock;
85 __IO HAL_RNG_StateTypeDef State;
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)
105typedef enum
106{
107 HAL_RNG_ERROR_CB_ID = 0x00U,
109 HAL_RNG_MSPINIT_CB_ID = 0x01U,
110 HAL_RNG_MSPDEINIT_CB_ID = 0x02U
112} HAL_RNG_CallbackIDTypeDef;
113
117typedef void (*pRNG_CallbackTypeDef)(RNG_HandleTypeDef *hrng);
118typedef 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 --------------------------------------------------------*/
279HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng);
280HAL_StatusTypeDef HAL_RNG_DeInit(RNG_HandleTypeDef *hrng);
281void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng);
282void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng);
283
284/* Callbacks Register/UnRegister functions ***********************************/
285#if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
286HAL_StatusTypeDef HAL_RNG_RegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID,
287 pRNG_CallbackTypeDef pCallback);
288HAL_StatusTypeDef HAL_RNG_UnRegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID);
289
290HAL_StatusTypeDef HAL_RNG_RegisterReadyDataCallback(RNG_HandleTypeDef *hrng, pRNG_ReadyDataCallbackTypeDef pCallback);
291HAL_StatusTypeDef HAL_RNG_UnRegisterReadyDataCallback(RNG_HandleTypeDef *hrng);
292#endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
293
301uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef
302 *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber() instead */
303uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef
304 *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */
305HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);
306HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng);
307uint32_t HAL_RNG_ReadLastRandomNumber(const RNG_HandleTypeDef *hrng);
308
309void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng);
310void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng);
311void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit);
312
320HAL_RNG_StateTypeDef HAL_RNG_GetState(const RNG_HandleTypeDef *hrng);
321uint32_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
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition
HAL_LockTypeDef
HAL Lock structures definition