TUKS MCU Introductory course / TUKS-COURSE-TIMER
Committer:
elmot
Date:
Fri Feb 24 21:13:56 2017 +0000
Revision:
1:d0dfbce63a89
Ready-to-copy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elmot 1:d0dfbce63a89 1 /**
elmot 1:d0dfbce63a89 2 ******************************************************************************
elmot 1:d0dfbce63a89 3 * @file stm32l4xx_hal_rng.h
elmot 1:d0dfbce63a89 4 * @author MCD Application Team
elmot 1:d0dfbce63a89 5 * @version V1.5.1
elmot 1:d0dfbce63a89 6 * @date 31-May-2016
elmot 1:d0dfbce63a89 7 * @brief Header file of RNG HAL module.
elmot 1:d0dfbce63a89 8 ******************************************************************************
elmot 1:d0dfbce63a89 9 * @attention
elmot 1:d0dfbce63a89 10 *
elmot 1:d0dfbce63a89 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
elmot 1:d0dfbce63a89 12 *
elmot 1:d0dfbce63a89 13 * Redistribution and use in source and binary forms, with or without modification,
elmot 1:d0dfbce63a89 14 * are permitted provided that the following conditions are met:
elmot 1:d0dfbce63a89 15 * 1. Redistributions of source code must retain the above copyright notice,
elmot 1:d0dfbce63a89 16 * this list of conditions and the following disclaimer.
elmot 1:d0dfbce63a89 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
elmot 1:d0dfbce63a89 18 * this list of conditions and the following disclaimer in the documentation
elmot 1:d0dfbce63a89 19 * and/or other materials provided with the distribution.
elmot 1:d0dfbce63a89 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
elmot 1:d0dfbce63a89 21 * may be used to endorse or promote products derived from this software
elmot 1:d0dfbce63a89 22 * without specific prior written permission.
elmot 1:d0dfbce63a89 23 *
elmot 1:d0dfbce63a89 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
elmot 1:d0dfbce63a89 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
elmot 1:d0dfbce63a89 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
elmot 1:d0dfbce63a89 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
elmot 1:d0dfbce63a89 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
elmot 1:d0dfbce63a89 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
elmot 1:d0dfbce63a89 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
elmot 1:d0dfbce63a89 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
elmot 1:d0dfbce63a89 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
elmot 1:d0dfbce63a89 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
elmot 1:d0dfbce63a89 34 *
elmot 1:d0dfbce63a89 35 ******************************************************************************
elmot 1:d0dfbce63a89 36 */
elmot 1:d0dfbce63a89 37
elmot 1:d0dfbce63a89 38 /* Define to prevent recursive inclusion -------------------------------------*/
elmot 1:d0dfbce63a89 39 #ifndef __STM32L4xx_HAL_RNG_H
elmot 1:d0dfbce63a89 40 #define __STM32L4xx_HAL_RNG_H
elmot 1:d0dfbce63a89 41
elmot 1:d0dfbce63a89 42 #ifdef __cplusplus
elmot 1:d0dfbce63a89 43 extern "C" {
elmot 1:d0dfbce63a89 44 #endif
elmot 1:d0dfbce63a89 45
elmot 1:d0dfbce63a89 46 /* Includes ------------------------------------------------------------------*/
elmot 1:d0dfbce63a89 47 #include "stm32l4xx_hal_def.h"
elmot 1:d0dfbce63a89 48
elmot 1:d0dfbce63a89 49 /** @addtogroup STM32L4xx_HAL_Driver
elmot 1:d0dfbce63a89 50 * @{
elmot 1:d0dfbce63a89 51 */
elmot 1:d0dfbce63a89 52
elmot 1:d0dfbce63a89 53 /** @addtogroup RNG
elmot 1:d0dfbce63a89 54 * @{
elmot 1:d0dfbce63a89 55 */
elmot 1:d0dfbce63a89 56
elmot 1:d0dfbce63a89 57 /* Exported types ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 58 /** @defgroup RNG_Exported_Types RNG Exported Types
elmot 1:d0dfbce63a89 59 * @{
elmot 1:d0dfbce63a89 60 */
elmot 1:d0dfbce63a89 61
elmot 1:d0dfbce63a89 62 /**
elmot 1:d0dfbce63a89 63 * @brief RNG HAL State Structure definition
elmot 1:d0dfbce63a89 64 */
elmot 1:d0dfbce63a89 65 typedef enum
elmot 1:d0dfbce63a89 66 {
elmot 1:d0dfbce63a89 67 HAL_RNG_STATE_RESET = 0x00, /*!< RNG not yet initialized or disabled */
elmot 1:d0dfbce63a89 68 HAL_RNG_STATE_READY = 0x01, /*!< RNG initialized and ready for use */
elmot 1:d0dfbce63a89 69 HAL_RNG_STATE_BUSY = 0x02, /*!< RNG internal process is ongoing */
elmot 1:d0dfbce63a89 70 HAL_RNG_STATE_TIMEOUT = 0x03, /*!< RNG timeout state */
elmot 1:d0dfbce63a89 71 HAL_RNG_STATE_ERROR = 0x04 /*!< RNG error state */
elmot 1:d0dfbce63a89 72
elmot 1:d0dfbce63a89 73 }HAL_RNG_StateTypeDef;
elmot 1:d0dfbce63a89 74
elmot 1:d0dfbce63a89 75 /**
elmot 1:d0dfbce63a89 76 * @brief RNG Handle Structure definition
elmot 1:d0dfbce63a89 77 */
elmot 1:d0dfbce63a89 78 typedef struct
elmot 1:d0dfbce63a89 79 {
elmot 1:d0dfbce63a89 80 RNG_TypeDef *Instance; /*!< Register base address */
elmot 1:d0dfbce63a89 81
elmot 1:d0dfbce63a89 82 HAL_LockTypeDef Lock; /*!< RNG locking object */
elmot 1:d0dfbce63a89 83
elmot 1:d0dfbce63a89 84 __IO HAL_RNG_StateTypeDef State; /*!< RNG communication state */
elmot 1:d0dfbce63a89 85
elmot 1:d0dfbce63a89 86 uint32_t RandomNumber; /*!< Last Generated RNG Data */
elmot 1:d0dfbce63a89 87
elmot 1:d0dfbce63a89 88 }RNG_HandleTypeDef;
elmot 1:d0dfbce63a89 89
elmot 1:d0dfbce63a89 90 /**
elmot 1:d0dfbce63a89 91 * @}
elmot 1:d0dfbce63a89 92 */
elmot 1:d0dfbce63a89 93
elmot 1:d0dfbce63a89 94 /* Exported constants --------------------------------------------------------*/
elmot 1:d0dfbce63a89 95 /** @defgroup RNG_Exported_Constants RNG Exported Constants
elmot 1:d0dfbce63a89 96 * @{
elmot 1:d0dfbce63a89 97 */
elmot 1:d0dfbce63a89 98
elmot 1:d0dfbce63a89 99 /** @defgroup RNG_Interrupt_definition RNG Interrupts Definition
elmot 1:d0dfbce63a89 100 * @{
elmot 1:d0dfbce63a89 101 */
elmot 1:d0dfbce63a89 102 #define RNG_IT_DRDY RNG_SR_DRDY /*!< Data Ready interrupt */
elmot 1:d0dfbce63a89 103 #define RNG_IT_CEI RNG_SR_CEIS /*!< Clock error interrupt */
elmot 1:d0dfbce63a89 104 #define RNG_IT_SEI RNG_SR_SEIS /*!< Seed error interrupt */
elmot 1:d0dfbce63a89 105 /**
elmot 1:d0dfbce63a89 106 * @}
elmot 1:d0dfbce63a89 107 */
elmot 1:d0dfbce63a89 108
elmot 1:d0dfbce63a89 109 /** @defgroup RNG_Flag_definition RNG Flags Definition
elmot 1:d0dfbce63a89 110 * @{
elmot 1:d0dfbce63a89 111 */
elmot 1:d0dfbce63a89 112 #define RNG_FLAG_DRDY RNG_SR_DRDY /*!< Data ready */
elmot 1:d0dfbce63a89 113 #define RNG_FLAG_CECS RNG_SR_CECS /*!< Clock error current status */
elmot 1:d0dfbce63a89 114 #define RNG_FLAG_SECS RNG_SR_SECS /*!< Seed error current status */
elmot 1:d0dfbce63a89 115 /**
elmot 1:d0dfbce63a89 116 * @}
elmot 1:d0dfbce63a89 117 */
elmot 1:d0dfbce63a89 118
elmot 1:d0dfbce63a89 119 /**
elmot 1:d0dfbce63a89 120 * @}
elmot 1:d0dfbce63a89 121 */
elmot 1:d0dfbce63a89 122
elmot 1:d0dfbce63a89 123 /* Exported macros -----------------------------------------------------------*/
elmot 1:d0dfbce63a89 124 /** @defgroup RNG_Exported_Macros RNG Exported Macros
elmot 1:d0dfbce63a89 125 * @{
elmot 1:d0dfbce63a89 126 */
elmot 1:d0dfbce63a89 127
elmot 1:d0dfbce63a89 128 /** @brief Reset RNG handle state.
elmot 1:d0dfbce63a89 129 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 130 * @retval None
elmot 1:d0dfbce63a89 131 */
elmot 1:d0dfbce63a89 132 #define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RNG_STATE_RESET)
elmot 1:d0dfbce63a89 133
elmot 1:d0dfbce63a89 134 /**
elmot 1:d0dfbce63a89 135 * @brief Enable the RNG peripheral.
elmot 1:d0dfbce63a89 136 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 137 * @retval None
elmot 1:d0dfbce63a89 138 */
elmot 1:d0dfbce63a89 139 #define __HAL_RNG_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_RNGEN)
elmot 1:d0dfbce63a89 140
elmot 1:d0dfbce63a89 141 /**
elmot 1:d0dfbce63a89 142 * @brief Disable the RNG peripheral.
elmot 1:d0dfbce63a89 143 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 144 * @retval None
elmot 1:d0dfbce63a89 145 */
elmot 1:d0dfbce63a89 146 #define __HAL_RNG_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_RNGEN)
elmot 1:d0dfbce63a89 147
elmot 1:d0dfbce63a89 148 /**
elmot 1:d0dfbce63a89 149 * @brief Check whether the specified RNG flag is set or not.
elmot 1:d0dfbce63a89 150 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 151 * @param __FLAG__: RNG flag
elmot 1:d0dfbce63a89 152 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 153 * @arg RNG_FLAG_DRDY: Data ready
elmot 1:d0dfbce63a89 154 * @arg RNG_FLAG_CECS: Clock error current status
elmot 1:d0dfbce63a89 155 * @arg RNG_FLAG_SECS: Seed error current status
elmot 1:d0dfbce63a89 156 * @retval The new state of __FLAG__ (SET or RESET).
elmot 1:d0dfbce63a89 157 */
elmot 1:d0dfbce63a89 158 #define __HAL_RNG_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
elmot 1:d0dfbce63a89 159
elmot 1:d0dfbce63a89 160
elmot 1:d0dfbce63a89 161 /**
elmot 1:d0dfbce63a89 162 * @brief Clear the selected RNG flag status.
elmot 1:d0dfbce63a89 163 * @param __HANDLE__: RNG handle
elmot 1:d0dfbce63a89 164 * @param __FLAG__: RNG flag to clear
elmot 1:d0dfbce63a89 165 * @note WARNING: This is a dummy macro for HAL code alignment,
elmot 1:d0dfbce63a89 166 * flags RNG_FLAG_DRDY, RNG_FLAG_CECS and RNG_FLAG_SECS are read-only.
elmot 1:d0dfbce63a89 167 * @retval None
elmot 1:d0dfbce63a89 168 */
elmot 1:d0dfbce63a89 169 #define __HAL_RNG_CLEAR_FLAG(__HANDLE__, __FLAG__) /* dummy macro */
elmot 1:d0dfbce63a89 170
elmot 1:d0dfbce63a89 171
elmot 1:d0dfbce63a89 172
elmot 1:d0dfbce63a89 173 /**
elmot 1:d0dfbce63a89 174 * @brief Enable the RNG interrupt.
elmot 1:d0dfbce63a89 175 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 176 * @retval None
elmot 1:d0dfbce63a89 177 */
elmot 1:d0dfbce63a89 178 #define __HAL_RNG_ENABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR |= RNG_CR_IE)
elmot 1:d0dfbce63a89 179
elmot 1:d0dfbce63a89 180 /**
elmot 1:d0dfbce63a89 181 * @brief Disable the RNG interrupt.
elmot 1:d0dfbce63a89 182 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 183 * @retval None
elmot 1:d0dfbce63a89 184 */
elmot 1:d0dfbce63a89 185 #define __HAL_RNG_DISABLE_IT(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~RNG_CR_IE)
elmot 1:d0dfbce63a89 186
elmot 1:d0dfbce63a89 187 /**
elmot 1:d0dfbce63a89 188 * @brief Check whether the specified RNG interrupt has occurred or not.
elmot 1:d0dfbce63a89 189 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 190 * @param __INTERRUPT__: specifies the RNG interrupt status flag to check.
elmot 1:d0dfbce63a89 191 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 192 * @arg RNG_IT_DRDY: Data ready interrupt
elmot 1:d0dfbce63a89 193 * @arg RNG_IT_CEI: Clock error interrupt
elmot 1:d0dfbce63a89 194 * @arg RNG_IT_SEI: Seed error interrupt
elmot 1:d0dfbce63a89 195 * @retval The new state of __INTERRUPT__ (SET or RESET).
elmot 1:d0dfbce63a89 196 */
elmot 1:d0dfbce63a89 197 #define __HAL_RNG_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR & (__INTERRUPT__)) == (__INTERRUPT__))
elmot 1:d0dfbce63a89 198
elmot 1:d0dfbce63a89 199 /**
elmot 1:d0dfbce63a89 200 * @brief Clear the RNG interrupt status flags.
elmot 1:d0dfbce63a89 201 * @param __HANDLE__: RNG Handle
elmot 1:d0dfbce63a89 202 * @param __INTERRUPT__: specifies the RNG interrupt status flag to clear.
elmot 1:d0dfbce63a89 203 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 204 * @arg RNG_IT_CEI: Clock error interrupt
elmot 1:d0dfbce63a89 205 * @arg RNG_IT_SEI: Seed error interrupt
elmot 1:d0dfbce63a89 206 * @note RNG_IT_DRDY flag is read-only, reading RNG_DR register automatically clears RNG_IT_DRDY.
elmot 1:d0dfbce63a89 207 * @retval None
elmot 1:d0dfbce63a89 208 */
elmot 1:d0dfbce63a89 209 #define __HAL_RNG_CLEAR_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->SR) = ~(__INTERRUPT__))
elmot 1:d0dfbce63a89 210
elmot 1:d0dfbce63a89 211 /**
elmot 1:d0dfbce63a89 212 * @}
elmot 1:d0dfbce63a89 213 */
elmot 1:d0dfbce63a89 214
elmot 1:d0dfbce63a89 215
elmot 1:d0dfbce63a89 216 /* Exported functions --------------------------------------------------------*/
elmot 1:d0dfbce63a89 217 /** @defgroup RNG_Exported_Functions RNG Exported Functions
elmot 1:d0dfbce63a89 218 * @{
elmot 1:d0dfbce63a89 219 */
elmot 1:d0dfbce63a89 220
elmot 1:d0dfbce63a89 221 /* Initialization and de-initialization functions ******************************/
elmot 1:d0dfbce63a89 222 /** @defgroup RNG_Exported_Functions_Group1 Initialization and de-initialization functions
elmot 1:d0dfbce63a89 223 * @{
elmot 1:d0dfbce63a89 224 */
elmot 1:d0dfbce63a89 225 HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 226 HAL_StatusTypeDef HAL_RNG_DeInit (RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 227 void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 228 void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 229 /**
elmot 1:d0dfbce63a89 230 * @}
elmot 1:d0dfbce63a89 231 */
elmot 1:d0dfbce63a89 232
elmot 1:d0dfbce63a89 233 /* Peripheral Control functions ************************************************/
elmot 1:d0dfbce63a89 234 /** @defgroup RNG_Exported_Functions_Group2 Peripheral Control functions
elmot 1:d0dfbce63a89 235 * @{
elmot 1:d0dfbce63a89 236 */
elmot 1:d0dfbce63a89 237 uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber() instead */
elmot 1:d0dfbce63a89 238 uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */
elmot 1:d0dfbce63a89 239
elmot 1:d0dfbce63a89 240 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);
elmot 1:d0dfbce63a89 241 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 242 uint32_t HAL_RNG_ReadLastRandomNumber(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 243
elmot 1:d0dfbce63a89 244 void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 245 void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 246 void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef* hrng, uint32_t random32bit);
elmot 1:d0dfbce63a89 247 /**
elmot 1:d0dfbce63a89 248 * @}
elmot 1:d0dfbce63a89 249 */
elmot 1:d0dfbce63a89 250
elmot 1:d0dfbce63a89 251 /* Peripheral State functions **************************************************/
elmot 1:d0dfbce63a89 252 /** @defgroup RNG_Exported_Functions_Group3 Peripheral State functions
elmot 1:d0dfbce63a89 253 * @{
elmot 1:d0dfbce63a89 254 */
elmot 1:d0dfbce63a89 255 HAL_RNG_StateTypeDef HAL_RNG_GetState(RNG_HandleTypeDef *hrng);
elmot 1:d0dfbce63a89 256 /**
elmot 1:d0dfbce63a89 257 * @}
elmot 1:d0dfbce63a89 258 */
elmot 1:d0dfbce63a89 259
elmot 1:d0dfbce63a89 260 /**
elmot 1:d0dfbce63a89 261 * @}
elmot 1:d0dfbce63a89 262 */
elmot 1:d0dfbce63a89 263
elmot 1:d0dfbce63a89 264 /* Private types -------------------------------------------------------------*/
elmot 1:d0dfbce63a89 265 /* Private defines -----------------------------------------------------------*/
elmot 1:d0dfbce63a89 266 /* Private variables ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 267 /* Private constants ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 268 /* Private macros ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 269 /* Private functions prototypes ----------------------------------------------*/
elmot 1:d0dfbce63a89 270
elmot 1:d0dfbce63a89 271 /**
elmot 1:d0dfbce63a89 272 * @}
elmot 1:d0dfbce63a89 273 */
elmot 1:d0dfbce63a89 274
elmot 1:d0dfbce63a89 275 /**
elmot 1:d0dfbce63a89 276 * @}
elmot 1:d0dfbce63a89 277 */
elmot 1:d0dfbce63a89 278
elmot 1:d0dfbce63a89 279 #ifdef __cplusplus
elmot 1:d0dfbce63a89 280 }
elmot 1:d0dfbce63a89 281 #endif
elmot 1:d0dfbce63a89 282
elmot 1:d0dfbce63a89 283 #endif /* __STM32L4xx_HAL_RNG_H */
elmot 1:d0dfbce63a89 284
elmot 1:d0dfbce63a89 285 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/