STM32L443xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_hal_iwdg.h 00004 * @author MCD Application Team 00005 * @brief Header file of IWDG HAL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2017 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * This software is licensed under terms that can be found in the LICENSE file 00013 * in the root directory of this software component. 00014 * If no LICENSE file comes with this software, it is provided AS-IS. 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* Define to prevent recursive inclusion -------------------------------------*/ 00020 #ifndef STM32L4xx_HAL_IWDG_H 00021 #define STM32L4xx_HAL_IWDG_H 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 #include "stm32l4xx_hal_def.h" 00029 00030 /** @addtogroup STM32L4xx_HAL_Driver 00031 * @{ 00032 */ 00033 00034 /** @defgroup IWDG IWDG 00035 * @{ 00036 */ 00037 00038 /* Exported types ------------------------------------------------------------*/ 00039 /** @defgroup IWDG_Exported_Types IWDG Exported Types 00040 * @{ 00041 */ 00042 00043 /** 00044 * @brief IWDG Init structure definition 00045 */ 00046 typedef struct 00047 { 00048 uint32_t Prescaler; /*!< Select the prescaler of the IWDG. 00049 This parameter can be a value of @ref IWDG_Prescaler */ 00050 00051 uint32_t Reload; /*!< Specifies the IWDG down-counter reload value. 00052 This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */ 00053 00054 uint32_t Window; /*!< Specifies the window value to be compared to the down-counter. 00055 This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */ 00056 00057 } IWDG_InitTypeDef; 00058 00059 /** 00060 * @brief IWDG Handle Structure definition 00061 */ 00062 typedef struct 00063 { 00064 IWDG_TypeDef *Instance; /*!< Register base address */ 00065 00066 IWDG_InitTypeDef Init; /*!< IWDG required parameters */ 00067 } IWDG_HandleTypeDef; 00068 00069 00070 /** 00071 * @} 00072 */ 00073 00074 /* Exported constants --------------------------------------------------------*/ 00075 /** @defgroup IWDG_Exported_Constants IWDG Exported Constants 00076 * @{ 00077 */ 00078 00079 /** @defgroup IWDG_Prescaler IWDG Prescaler 00080 * @{ 00081 */ 00082 #define IWDG_PRESCALER_4 0x00000000u /*!< IWDG prescaler set to 4 */ 00083 #define IWDG_PRESCALER_8 IWDG_PR_PR_0 /*!< IWDG prescaler set to 8 */ 00084 #define IWDG_PRESCALER_16 IWDG_PR_PR_1 /*!< IWDG prescaler set to 16 */ 00085 #define IWDG_PRESCALER_32 (IWDG_PR_PR_1 | IWDG_PR_PR_0) /*!< IWDG prescaler set to 32 */ 00086 #define IWDG_PRESCALER_64 IWDG_PR_PR_2 /*!< IWDG prescaler set to 64 */ 00087 #define IWDG_PRESCALER_128 (IWDG_PR_PR_2 | IWDG_PR_PR_0) /*!< IWDG prescaler set to 128 */ 00088 #define IWDG_PRESCALER_256 (IWDG_PR_PR_2 | IWDG_PR_PR_1) /*!< IWDG prescaler set to 256 */ 00089 /** 00090 * @} 00091 */ 00092 00093 /** @defgroup IWDG_Window_option IWDG Window option 00094 * @{ 00095 */ 00096 #define IWDG_WINDOW_DISABLE IWDG_WINR_WIN 00097 /** 00098 * @} 00099 */ 00100 00101 /** 00102 * @} 00103 */ 00104 00105 /* Exported macros -----------------------------------------------------------*/ 00106 /** @defgroup IWDG_Exported_Macros IWDG Exported Macros 00107 * @{ 00108 */ 00109 00110 /** 00111 * @brief Enable the IWDG peripheral. 00112 * @param __HANDLE__ IWDG handle 00113 * @retval None 00114 */ 00115 #define __HAL_IWDG_START(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_ENABLE) 00116 00117 /** 00118 * @brief Reload IWDG counter with value defined in the reload register 00119 * (write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers disabled). 00120 * @param __HANDLE__ IWDG handle 00121 * @retval None 00122 */ 00123 #define __HAL_IWDG_RELOAD_COUNTER(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_RELOAD) 00124 00125 /** 00126 * @} 00127 */ 00128 00129 /* Exported functions --------------------------------------------------------*/ 00130 /** @defgroup IWDG_Exported_Functions IWDG Exported Functions 00131 * @{ 00132 */ 00133 00134 /** @defgroup IWDG_Exported_Functions_Group1 Initialization and Start functions 00135 * @{ 00136 */ 00137 /* Initialization/Start functions ********************************************/ 00138 HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg); 00139 /** 00140 * @} 00141 */ 00142 00143 /** @defgroup IWDG_Exported_Functions_Group2 IO operation functions 00144 * @{ 00145 */ 00146 /* I/O operation functions ****************************************************/ 00147 HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg); 00148 /** 00149 * @} 00150 */ 00151 00152 /** 00153 * @} 00154 */ 00155 00156 /* Private constants ---------------------------------------------------------*/ 00157 /** @defgroup IWDG_Private_Constants IWDG Private Constants 00158 * @{ 00159 */ 00160 00161 /** 00162 * @brief IWDG Key Register BitMask 00163 */ 00164 #define IWDG_KEY_RELOAD 0x0000AAAAu /*!< IWDG Reload Counter Enable */ 00165 #define IWDG_KEY_ENABLE 0x0000CCCCu /*!< IWDG Peripheral Enable */ 00166 #define IWDG_KEY_WRITE_ACCESS_ENABLE 0x00005555u /*!< IWDG KR Write Access Enable */ 00167 #define IWDG_KEY_WRITE_ACCESS_DISABLE 0x00000000u /*!< IWDG KR Write Access Disable */ 00168 00169 /** 00170 * @} 00171 */ 00172 00173 /* Private macros ------------------------------------------------------------*/ 00174 /** @defgroup IWDG_Private_Macros IWDG Private Macros 00175 * @{ 00176 */ 00177 00178 /** 00179 * @brief Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers. 00180 * @param __HANDLE__ IWDG handle 00181 * @retval None 00182 */ 00183 #define IWDG_ENABLE_WRITE_ACCESS(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_ENABLE) 00184 00185 /** 00186 * @brief Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers. 00187 * @param __HANDLE__ IWDG handle 00188 * @retval None 00189 */ 00190 #define IWDG_DISABLE_WRITE_ACCESS(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_DISABLE) 00191 00192 /** 00193 * @brief Check IWDG prescaler value. 00194 * @param __PRESCALER__ IWDG prescaler value 00195 * @retval None 00196 */ 00197 #define IS_IWDG_PRESCALER(__PRESCALER__) (((__PRESCALER__) == IWDG_PRESCALER_4) || \ 00198 ((__PRESCALER__) == IWDG_PRESCALER_8) || \ 00199 ((__PRESCALER__) == IWDG_PRESCALER_16) || \ 00200 ((__PRESCALER__) == IWDG_PRESCALER_32) || \ 00201 ((__PRESCALER__) == IWDG_PRESCALER_64) || \ 00202 ((__PRESCALER__) == IWDG_PRESCALER_128)|| \ 00203 ((__PRESCALER__) == IWDG_PRESCALER_256)) 00204 00205 /** 00206 * @brief Check IWDG reload value. 00207 * @param __RELOAD__ IWDG reload value 00208 * @retval None 00209 */ 00210 #define IS_IWDG_RELOAD(__RELOAD__) ((__RELOAD__) <= IWDG_RLR_RL) 00211 00212 /** 00213 * @brief Check IWDG window value. 00214 * @param __WINDOW__ IWDG window value 00215 * @retval None 00216 */ 00217 #define IS_IWDG_WINDOW(__WINDOW__) ((__WINDOW__) <= IWDG_WINR_WIN) 00218 00219 00220 /** 00221 * @} 00222 */ 00223 00224 /** 00225 * @} 00226 */ 00227 00228 /** 00229 * @} 00230 */ 00231 00232 00233 #ifdef __cplusplus 00234 } 00235 #endif 00236 00237 #endif /* STM32L4xx_HAL_IWDG_H */