STM32F479xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32f4xx_ll_iwdg.h 00004 * @author MCD Application Team 00005 * @brief Header file of IWDG LL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * <h2><center>© Copyright (c) 2016 STMicroelectronics. 00010 * All rights reserved.</center></h2> 00011 * 00012 * This software component is licensed by ST under BSD 3-Clause license, 00013 * the "License"; You may not use this file except in compliance with the 00014 * License. You may obtain a copy of the License at: 00015 * opensource.org/licenses/BSD-3-Clause 00016 * 00017 ****************************************************************************** 00018 */ 00019 00020 /* Define to prevent recursive inclusion -------------------------------------*/ 00021 #ifndef STM32F4xx_LL_IWDG_H 00022 #define STM32F4xx_LL_IWDG_H 00023 00024 #ifdef __cplusplus 00025 extern "C" { 00026 #endif 00027 00028 /* Includes ------------------------------------------------------------------*/ 00029 #include "stm32f4xx.h" 00030 00031 /** @addtogroup STM32F4xx_LL_Driver 00032 * @{ 00033 */ 00034 00035 #if defined(IWDG) 00036 00037 /** @defgroup IWDG_LL IWDG 00038 * @{ 00039 */ 00040 00041 /* Private types -------------------------------------------------------------*/ 00042 /* Private variables ---------------------------------------------------------*/ 00043 00044 /* Private constants ---------------------------------------------------------*/ 00045 /** @defgroup IWDG_LL_Private_Constants IWDG Private Constants 00046 * @{ 00047 */ 00048 #define LL_IWDG_KEY_RELOAD 0x0000AAAAU /*!< IWDG Reload Counter Enable */ 00049 #define LL_IWDG_KEY_ENABLE 0x0000CCCCU /*!< IWDG Peripheral Enable */ 00050 #define LL_IWDG_KEY_WR_ACCESS_ENABLE 0x00005555U /*!< IWDG KR Write Access Enable */ 00051 #define LL_IWDG_KEY_WR_ACCESS_DISABLE 0x00000000U /*!< IWDG KR Write Access Disable */ 00052 /** 00053 * @} 00054 */ 00055 00056 /* Private macros ------------------------------------------------------------*/ 00057 00058 /* Exported types ------------------------------------------------------------*/ 00059 /* Exported constants --------------------------------------------------------*/ 00060 /** @defgroup IWDG_LL_Exported_Constants IWDG Exported Constants 00061 * @{ 00062 */ 00063 00064 /** @defgroup IWDG_LL_EC_GET_FLAG Get Flags Defines 00065 * @brief Flags defines which can be used with LL_IWDG_ReadReg function 00066 * @{ 00067 */ 00068 #define LL_IWDG_SR_PVU IWDG_SR_PVU /*!< Watchdog prescaler value update */ 00069 #define LL_IWDG_SR_RVU IWDG_SR_RVU /*!< Watchdog counter reload value update */ 00070 /** 00071 * @} 00072 */ 00073 00074 /** @defgroup IWDG_LL_EC_PRESCALER Prescaler Divider 00075 * @{ 00076 */ 00077 #define LL_IWDG_PRESCALER_4 0x00000000U /*!< Divider by 4 */ 00078 #define LL_IWDG_PRESCALER_8 (IWDG_PR_PR_0) /*!< Divider by 8 */ 00079 #define LL_IWDG_PRESCALER_16 (IWDG_PR_PR_1) /*!< Divider by 16 */ 00080 #define LL_IWDG_PRESCALER_32 (IWDG_PR_PR_1 | IWDG_PR_PR_0) /*!< Divider by 32 */ 00081 #define LL_IWDG_PRESCALER_64 (IWDG_PR_PR_2) /*!< Divider by 64 */ 00082 #define LL_IWDG_PRESCALER_128 (IWDG_PR_PR_2 | IWDG_PR_PR_0) /*!< Divider by 128 */ 00083 #define LL_IWDG_PRESCALER_256 (IWDG_PR_PR_2 | IWDG_PR_PR_1) /*!< Divider by 256 */ 00084 /** 00085 * @} 00086 */ 00087 00088 /** 00089 * @} 00090 */ 00091 00092 /* Exported macro ------------------------------------------------------------*/ 00093 /** @defgroup IWDG_LL_Exported_Macros IWDG Exported Macros 00094 * @{ 00095 */ 00096 00097 /** @defgroup IWDG_LL_EM_WRITE_READ Common Write and read registers Macros 00098 * @{ 00099 */ 00100 00101 /** 00102 * @brief Write a value in IWDG register 00103 * @param __INSTANCE__ IWDG Instance 00104 * @param __REG__ Register to be written 00105 * @param __VALUE__ Value to be written in the register 00106 * @retval None 00107 */ 00108 #define LL_IWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) 00109 00110 /** 00111 * @brief Read a value in IWDG register 00112 * @param __INSTANCE__ IWDG Instance 00113 * @param __REG__ Register to be read 00114 * @retval Register value 00115 */ 00116 #define LL_IWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) 00117 /** 00118 * @} 00119 */ 00120 00121 /** 00122 * @} 00123 */ 00124 00125 00126 /* Exported functions --------------------------------------------------------*/ 00127 /** @defgroup IWDG_LL_Exported_Functions IWDG Exported Functions 00128 * @{ 00129 */ 00130 /** @defgroup IWDG_LL_EF_Configuration Configuration 00131 * @{ 00132 */ 00133 00134 /** 00135 * @brief Start the Independent Watchdog 00136 * @note Except if the hardware watchdog option is selected 00137 * @rmtoll KR KEY LL_IWDG_Enable 00138 * @param IWDGx IWDG Instance 00139 * @retval None 00140 */ 00141 __STATIC_INLINE void LL_IWDG_Enable(IWDG_TypeDef *IWDGx) 00142 { 00143 WRITE_REG(IWDGx->KR, LL_IWDG_KEY_ENABLE); 00144 } 00145 00146 /** 00147 * @brief Reloads IWDG counter with value defined in the reload register 00148 * @rmtoll KR KEY LL_IWDG_ReloadCounter 00149 * @param IWDGx IWDG Instance 00150 * @retval None 00151 */ 00152 __STATIC_INLINE void LL_IWDG_ReloadCounter(IWDG_TypeDef *IWDGx) 00153 { 00154 WRITE_REG(IWDGx->KR, LL_IWDG_KEY_RELOAD); 00155 } 00156 00157 /** 00158 * @brief Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers 00159 * @rmtoll KR KEY LL_IWDG_EnableWriteAccess 00160 * @param IWDGx IWDG Instance 00161 * @retval None 00162 */ 00163 __STATIC_INLINE void LL_IWDG_EnableWriteAccess(IWDG_TypeDef *IWDGx) 00164 { 00165 WRITE_REG(IWDGx->KR, LL_IWDG_KEY_WR_ACCESS_ENABLE); 00166 } 00167 00168 /** 00169 * @brief Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers 00170 * @rmtoll KR KEY LL_IWDG_DisableWriteAccess 00171 * @param IWDGx IWDG Instance 00172 * @retval None 00173 */ 00174 __STATIC_INLINE void LL_IWDG_DisableWriteAccess(IWDG_TypeDef *IWDGx) 00175 { 00176 WRITE_REG(IWDGx->KR, LL_IWDG_KEY_WR_ACCESS_DISABLE); 00177 } 00178 00179 /** 00180 * @brief Select the prescaler of the IWDG 00181 * @rmtoll PR PR LL_IWDG_SetPrescaler 00182 * @param IWDGx IWDG Instance 00183 * @param Prescaler This parameter can be one of the following values: 00184 * @arg @ref LL_IWDG_PRESCALER_4 00185 * @arg @ref LL_IWDG_PRESCALER_8 00186 * @arg @ref LL_IWDG_PRESCALER_16 00187 * @arg @ref LL_IWDG_PRESCALER_32 00188 * @arg @ref LL_IWDG_PRESCALER_64 00189 * @arg @ref LL_IWDG_PRESCALER_128 00190 * @arg @ref LL_IWDG_PRESCALER_256 00191 * @retval None 00192 */ 00193 __STATIC_INLINE void LL_IWDG_SetPrescaler(IWDG_TypeDef *IWDGx, uint32_t Prescaler) 00194 { 00195 WRITE_REG(IWDGx->PR, IWDG_PR_PR & Prescaler); 00196 } 00197 00198 /** 00199 * @brief Get the selected prescaler of the IWDG 00200 * @rmtoll PR PR LL_IWDG_GetPrescaler 00201 * @param IWDGx IWDG Instance 00202 * @retval Returned value can be one of the following values: 00203 * @arg @ref LL_IWDG_PRESCALER_4 00204 * @arg @ref LL_IWDG_PRESCALER_8 00205 * @arg @ref LL_IWDG_PRESCALER_16 00206 * @arg @ref LL_IWDG_PRESCALER_32 00207 * @arg @ref LL_IWDG_PRESCALER_64 00208 * @arg @ref LL_IWDG_PRESCALER_128 00209 * @arg @ref LL_IWDG_PRESCALER_256 00210 */ 00211 __STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(IWDG_TypeDef *IWDGx) 00212 { 00213 return (READ_REG(IWDGx->PR)); 00214 } 00215 00216 /** 00217 * @brief Specify the IWDG down-counter reload value 00218 * @rmtoll RLR RL LL_IWDG_SetReloadCounter 00219 * @param IWDGx IWDG Instance 00220 * @param Counter Value between Min_Data=0 and Max_Data=0x0FFF 00221 * @retval None 00222 */ 00223 __STATIC_INLINE void LL_IWDG_SetReloadCounter(IWDG_TypeDef *IWDGx, uint32_t Counter) 00224 { 00225 WRITE_REG(IWDGx->RLR, IWDG_RLR_RL & Counter); 00226 } 00227 00228 /** 00229 * @brief Get the specified IWDG down-counter reload value 00230 * @rmtoll RLR RL LL_IWDG_GetReloadCounter 00231 * @param IWDGx IWDG Instance 00232 * @retval Value between Min_Data=0 and Max_Data=0x0FFF 00233 */ 00234 __STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(IWDG_TypeDef *IWDGx) 00235 { 00236 return (READ_REG(IWDGx->RLR)); 00237 } 00238 00239 /** 00240 * @} 00241 */ 00242 00243 /** @defgroup IWDG_LL_EF_FLAG_Management FLAG_Management 00244 * @{ 00245 */ 00246 00247 /** 00248 * @brief Check if flag Prescaler Value Update is set or not 00249 * @rmtoll SR PVU LL_IWDG_IsActiveFlag_PVU 00250 * @param IWDGx IWDG Instance 00251 * @retval State of bit (1 or 0). 00252 */ 00253 __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx) 00254 { 00255 return ((READ_BIT(IWDGx->SR, IWDG_SR_PVU) == (IWDG_SR_PVU)) ? 1UL : 0UL); 00256 } 00257 00258 /** 00259 * @brief Check if flag Reload Value Update is set or not 00260 * @rmtoll SR RVU LL_IWDG_IsActiveFlag_RVU 00261 * @param IWDGx IWDG Instance 00262 * @retval State of bit (1 or 0). 00263 */ 00264 __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx) 00265 { 00266 return ((READ_BIT(IWDGx->SR, IWDG_SR_RVU) == (IWDG_SR_RVU)) ? 1UL : 0UL); 00267 } 00268 00269 /** 00270 * @brief Check if flags Prescaler & Reload Value Update are reset or not 00271 * @rmtoll SR PVU LL_IWDG_IsReady\n 00272 * SR RVU LL_IWDG_IsReady 00273 * @param IWDGx IWDG Instance 00274 * @retval State of bits (1 or 0). 00275 */ 00276 __STATIC_INLINE uint32_t LL_IWDG_IsReady(IWDG_TypeDef *IWDGx) 00277 { 00278 return ((READ_BIT(IWDGx->SR, IWDG_SR_PVU | IWDG_SR_RVU) == 0U) ? 1UL : 0UL); 00279 } 00280 00281 /** 00282 * @} 00283 */ 00284 00285 /** 00286 * @} 00287 */ 00288 00289 /** 00290 * @} 00291 */ 00292 00293 #endif /* IWDG */ 00294 00295 /** 00296 * @} 00297 */ 00298 00299 #ifdef __cplusplus 00300 } 00301 #endif 00302 00303 #endif /* STM32F4xx_LL_IWDG_H */ 00304 00305 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/