20#ifndef STM32F4xx_HAL_RNG_H
21#define STM32F4xx_HAL_RNG_H
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;
75#if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
76typedef struct __RNG_HandleTypeDef
81 RNG_TypeDef *Instance;
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);
101#if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
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;
117typedef void (*pRNG_CallbackTypeDef)(RNG_HandleTypeDef *hrng);
118typedef void (*pRNG_ReadyDataCallbackTypeDef)(RNG_HandleTypeDef *hrng, uint32_t random32bit);
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
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
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; \
190#define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RNG_STATE_RESET)
198#define __HAL_RNG_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_RNGEN)
205#define __HAL_RNG_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_RNGEN)
217#define __HAL_RNG_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
227#define __HAL_RNG_CLEAR_FLAG(__HANDLE__, __FLAG__)
234#define __HAL_RNG_ENABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_IE)
241#define __HAL_RNG_DISABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_IE)
253#define __HAL_RNG_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR & (__INTERRUPT__)) == (__INTERRUPT__))
265#define __HAL_RNG_CLEAR_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR) = ~(__INTERRUPT__))
281void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng);
282void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng);
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);
290HAL_StatusTypeDef HAL_RNG_RegisterReadyDataCallback(RNG_HandleTypeDef *hrng, pRNG_ReadyDataCallbackTypeDef pCallback);
301uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef
303uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef
305HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);
307uint32_t HAL_RNG_ReadLastRandomNumber(
const RNG_HandleTypeDef *hrng);
309void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng);
310void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng);
311void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit);
320HAL_RNG_StateTypeDef HAL_RNG_GetState(
const RNG_HandleTypeDef *hrng);
321uint32_t HAL_RNG_GetError(
const RNG_HandleTypeDef *hrng);
334#define IS_RNG_IT(IT) (((IT) == RNG_IT_CEI) || \
335 ((IT) == RNG_IT_SEI))
337#define IS_RNG_FLAG(FLAG) (((FLAG) == RNG_FLAG_DRDY) || \
338 ((FLAG) == RNG_FLAG_CECS) || \
339 ((FLAG) == RNG_FLAG_SECS))
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition
HAL_LockTypeDef
HAL Lock structures definition