| /** |
| ****************************************************************************** |
| * @file stm32l5xx_hal_rng_ex.h |
| * @author MCD Application Team |
| * @brief Header file of RNG HAL Extension module. |
| ****************************************************************************** |
| * @attention |
| * |
| * Copyright (c) 2019 STMicroelectronics. |
| * All rights reserved. |
| * |
| * This software is licensed under terms that can be found in the LICENSE file |
| * in the root directory of this software component. |
| * If no LICENSE file comes with this software, it is provided AS-IS. |
| * |
| ****************************************************************************** |
| */ |
| |
| /* Define to prevent recursive inclusion -------------------------------------*/ |
| #ifndef STM32L5xx_HAL_RNG_EX_H |
| #define STM32L5xx_HAL_RNG_EX_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* Includes ------------------------------------------------------------------*/ |
| #include "stm32l5xx_hal_def.h" |
| |
| /** @addtogroup STM32L5xx_HAL_Driver |
| * @{ |
| */ |
| |
| #if defined(RNG) |
| #if defined(RNG_CR_CONDRST) |
| |
| /** @defgroup RNG_Ex RNG_Ex |
| * @brief RNG Extension HAL module driver |
| * @{ |
| */ |
| |
| /* Exported types ------------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Exported_Types RNG_Ex Exported Types |
| * @brief RNG_Ex Exported types |
| * @{ |
| */ |
| |
| /** |
| * @brief RNG_Ex Configuration Structure definition |
| */ |
| |
| typedef struct |
| { |
| uint32_t Config1; /*!< Config1 must be a value between 0 and 0x3F */ |
| uint32_t Config2; /*!< Config2 must be a value between 0 and 0x7 */ |
| uint32_t Config3; /*!< Config3 must be a value between 0 and 0xF */ |
| uint32_t ClockDivider; /*!< Clock Divider factor.This parameter can |
| be a value of @ref RNG_Ex_Clock_Divider_Factor */ |
| uint32_t NistCompliance; /*!< NIST compliance.This parameter can be a |
| value of @ref RNG_Ex_NIST_Compliance */ |
| } RNG_ConfigTypeDef; |
| |
| /** |
| * @} |
| */ |
| |
| /* Exported constants --------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Exported_Constants RNG_Ex Exported Constants |
| * @{ |
| */ |
| |
| /** @defgroup RNG_Ex_Clock_Divider_Factor Value used to configure an internal |
| * programmable divider acting on the incoming RNG clock |
| * @{ |
| */ |
| #define RNG_CLKDIV_BY_1 (0x00000000UL) /*!< No clock division */ |
| #define RNG_CLKDIV_BY_2 (RNG_CR_CLKDIV_0) |
| /*!< 2 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_4 (RNG_CR_CLKDIV_1) |
| /*!< 4 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_8 (RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0) |
| /*!< 8 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_16 (RNG_CR_CLKDIV_2) |
| /*!< 16 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_32 (RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_0) |
| /*!< 32 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_64 (RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1) |
| /*!< 64 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_128 (RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0) |
| /*!< 128 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_256 (RNG_CR_CLKDIV_3) |
| /*!< 256 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_512 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_0) |
| /*!< 512 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_1024 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_1) |
| /*!< 1024 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_2048 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0) |
| /*!< 2048 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_4096 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2) |
| /*!< 4096 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_8192 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_0) |
| /*!< 8192 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_16384 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1) |
| /*!< 16384 RNG clock cycles per internal RNG clock */ |
| #define RNG_CLKDIV_BY_32768 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0) |
| /*!< 32768 RNG clock cycles per internal RNG clock */ |
| /** |
| * @} |
| */ |
| |
| /** @defgroup RNG_Ex_NIST_Compliance NIST Compliance configuration |
| * @{ |
| */ |
| #define RNG_NIST_COMPLIANT (0x00000000UL) /*!< NIST compliant configuration*/ |
| #define RNG_CUSTOM_NIST (RNG_CR_NISTC) /*!< Custom NIST configuration */ |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Private types -------------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Private_Types RNG_Ex Private Types |
| * @{ |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Private variables ---------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Private_Variables RNG_Ex Private Variables |
| * @{ |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Private constants ---------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Private_Constants RNG_Ex Private Constants |
| * @{ |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Private macros ------------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Private_Macros RNG_Ex Private Macros |
| * @{ |
| */ |
| |
| #define IS_RNG_CLOCK_DIVIDER(__CLOCK_DIV__) (((__CLOCK_DIV__) == RNG_CLKDIV_BY_1) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_2) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_4) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_8) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_16) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_32) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_64) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_128) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_256) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_512) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_1024) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_2048) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_4096) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_8192) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_16384) || \ |
| ((__CLOCK_DIV__) == RNG_CLKDIV_BY_32768)) |
| |
| |
| #define IS_RNG_NIST_COMPLIANCE(__NIST_COMPLIANCE__) (((__NIST_COMPLIANCE__) == RNG_NIST_COMPLIANT) || \ |
| ((__NIST_COMPLIANCE__) == RNG_CUSTOM_NIST)) |
| |
| #define IS_RNG_CONFIG1(__CONFIG1__) ((__CONFIG1__) <= 0x3FUL) |
| |
| #define IS_RNG_CONFIG2(__CONFIG2__) ((__CONFIG2__) <= 0x07UL) |
| |
| #define IS_RNG_CONFIG3(__CONFIG3__) ((__CONFIG3__) <= 0xFUL) |
| |
| |
| /** |
| * @} |
| */ |
| |
| /* Private functions ---------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Private_Functions RNG_Ex Private Functions |
| * @{ |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Exported functions --------------------------------------------------------*/ |
| /** @defgroup RNG_Ex_Exported_Functions RNG_Ex Exported Functions |
| * @{ |
| */ |
| |
| /** @addtogroup RNG_Ex_Exported_Functions_Group1 |
| * @{ |
| */ |
| HAL_StatusTypeDef HAL_RNGEx_SetConfig(RNG_HandleTypeDef *hrng, RNG_ConfigTypeDef *pConf); |
| HAL_StatusTypeDef HAL_RNGEx_GetConfig(RNG_HandleTypeDef *hrng, RNG_ConfigTypeDef *pConf); |
| HAL_StatusTypeDef HAL_RNGEx_LockConfig(RNG_HandleTypeDef *hrng); |
| |
| /** |
| * @} |
| */ |
| |
| /** @addtogroup RNG_Ex_Exported_Functions_Group2 |
| * @{ |
| */ |
| HAL_StatusTypeDef HAL_RNGEx_RecoverSeedError(RNG_HandleTypeDef *hrng); |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| #endif /* RNG_CR_CONDRST */ |
| #endif /* RNG */ |
| |
| /** |
| * @} |
| */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| #endif /* STM32L5xx_HAL_RNG_EX_H */ |
| |