Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TUKS-COURSE-TIMER by
stm32l4xx_ll_iwdg.h
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_ll_iwdg.h 00004 * @author MCD Application Team 00005 * @version V1.5.1 00006 * @date 31-May-2016 00007 * @brief Header file of IWDG LL module. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> 00012 * 00013 * Redistribution and use in source and binary forms, with or without modification, 00014 * are permitted provided that the following conditions are met: 00015 * 1. Redistributions of source code must retain the above copyright notice, 00016 * this list of conditions and the following disclaimer. 00017 * 2. Redistributions in binary form must reproduce the above copyright notice, 00018 * this list of conditions and the following disclaimer in the documentation 00019 * and/or other materials provided with the distribution. 00020 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00021 * may be used to endorse or promote products derived from this software 00022 * without specific prior written permission. 00023 * 00024 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00025 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00026 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00027 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00028 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00029 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00030 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00031 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00032 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00033 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00034 * 00035 ****************************************************************************** 00036 */ 00037 00038 /* Define to prevent recursive inclusion -------------------------------------*/ 00039 #ifndef __STM32L4xx_LL_IWDG_H 00040 #define __STM32L4xx_LL_IWDG_H 00041 00042 #ifdef __cplusplus 00043 extern "C" { 00044 #endif 00045 00046 /* Includes ------------------------------------------------------------------*/ 00047 #include "stm32l4xx.h" 00048 00049 /** @addtogroup STM32L4xx_LL_Driver 00050 * @{ 00051 */ 00052 00053 #if defined(IWDG) 00054 00055 /** @defgroup IWDG_LL IWDG 00056 * @{ 00057 */ 00058 00059 /* Private types -------------------------------------------------------------*/ 00060 /* Private variables ---------------------------------------------------------*/ 00061 00062 /* Private constants ---------------------------------------------------------*/ 00063 /** @defgroup IWDG_LL_Private_Constants IWDG Private Constants 00064 * @{ 00065 */ 00066 00067 #define LL_IWDG_KEY_RELOAD ((uint32_t)0x0000AAAAU) /*!< IWDG Reload Counter Enable */ 00068 #define LL_IWDG_KEY_ENABLE ((uint32_t)0x0000CCCCU) /*!< IWDG Peripheral Enable */ 00069 #define LL_IWDG_KEY_WR_ACCESS_ENABLE ((uint32_t)0x00005555U) /*!< IWDG KR Write Access Enable */ 00070 #define LL_IWDG_KEY_WR_ACCESS_DISABLE ((uint32_t)0x00000000U) /*!< IWDG KR Write Access Disable */ 00071 00072 /** 00073 * @} 00074 */ 00075 00076 /* Private macros ------------------------------------------------------------*/ 00077 00078 /* Exported types ------------------------------------------------------------*/ 00079 /* Exported constants --------------------------------------------------------*/ 00080 /** @defgroup IWDG_LL_Exported_Constants IWDG Exported Constants 00081 * @{ 00082 */ 00083 00084 /** @defgroup IWDG_LL_EC_GET_FLAG Get Flags Defines 00085 * @brief Flags defines which can be used with LL_IWDG_ReadReg function 00086 * @{ 00087 */ 00088 #define LL_IWDG_SR_PVU IWDG_SR_PVU /*!< Watchdog prescaler value update */ 00089 #define LL_IWDG_SR_RVU IWDG_SR_RVU /*!< Watchdog counter reload value update */ 00090 #define LL_IWDG_SR_WVU IWDG_SR_WVU /*!< Watchdog counter window value update */ 00091 00092 /** 00093 * @} 00094 */ 00095 00096 /** @defgroup IWDG_LL_EC_PRESCALER Prescaler Divider 00097 * @{ 00098 */ 00099 #define LL_IWDG_PRESCALER_4 ((uint32_t)0x00000000U) /*!< Divider by 4 */ 00100 #define LL_IWDG_PRESCALER_8 (IWDG_PR_PR_0) /*!< Divider by 8 */ 00101 #define LL_IWDG_PRESCALER_16 (IWDG_PR_PR_1) /*!< Divider by 16 */ 00102 #define LL_IWDG_PRESCALER_32 (IWDG_PR_PR_1 | IWDG_PR_PR_0) /*!< Divider by 32 */ 00103 #define LL_IWDG_PRESCALER_64 (IWDG_PR_PR_2) /*!< Divider by 64 */ 00104 #define LL_IWDG_PRESCALER_128 (IWDG_PR_PR_2 | IWDG_PR_PR_0) /*!< Divider by 128 */ 00105 #define LL_IWDG_PRESCALER_256 (IWDG_PR_PR_2 | IWDG_PR_PR_1) /*!< Divider by 256 */ 00106 /** 00107 * @} 00108 */ 00109 00110 /** 00111 * @} 00112 */ 00113 00114 /* Exported macro ------------------------------------------------------------*/ 00115 /** @defgroup IWDG_LL_Exported_Macros IWDG Exported Macros 00116 * @{ 00117 */ 00118 00119 /** @defgroup IWDG_LL_EM_WRITE_READ Common Write and read registers Macros 00120 * @{ 00121 */ 00122 00123 /** 00124 * @brief Write a value in IWDG register 00125 * @param __INSTANCE__ IWDG Instance 00126 * @param __REG__ Register to be written 00127 * @param __VALUE__ Value to be written in the register 00128 * @retval None 00129 */ 00130 #define LL_IWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) 00131 00132 /** 00133 * @brief Read a value in IWDG register 00134 * @param __INSTANCE__ IWDG Instance 00135 * @param __REG__ Register to be read 00136 * @retval Register value 00137 */ 00138 #define LL_IWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) 00139 /** 00140 * @} 00141 */ 00142 00143 /** 00144 * @} 00145 */ 00146 00147 00148 /* Exported functions --------------------------------------------------------*/ 00149 /** @defgroup IWDG_LL_Exported_Functions IWDG Exported Functions 00150 * @{ 00151 */ 00152 /** @defgroup IWDG_LL_EF_Configuration Configuration 00153 * @{ 00154 */ 00155 00156 /** 00157 * @brief Start the Independent Watchdog 00158 * @note Except if the hardware watchdog option is selected 00159 * @rmtoll KR KEY LL_IWDG_Enable 00160 * @param IWDGx IWDG Instance 00161 * @retval None 00162 */ 00163 __STATIC_INLINE void LL_IWDG_Enable(IWDG_TypeDef *IWDGx) 00164 { 00165 WRITE_REG(IWDG->KR, LL_IWDG_KEY_ENABLE); 00166 } 00167 00168 /** 00169 * @brief Reloads IWDG counter with value defined in the reload register 00170 * @rmtoll KR KEY LL_IWDG_ReloadCounter 00171 * @param IWDGx IWDG Instance 00172 * @retval None 00173 */ 00174 __STATIC_INLINE void LL_IWDG_ReloadCounter(IWDG_TypeDef *IWDGx) 00175 { 00176 WRITE_REG(IWDG->KR, LL_IWDG_KEY_RELOAD); 00177 } 00178 00179 /** 00180 * @brief Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers 00181 * @rmtoll KR KEY LL_IWDG_EnableWriteAccess 00182 * @param IWDGx IWDG Instance 00183 * @retval None 00184 */ 00185 __STATIC_INLINE void LL_IWDG_EnableWriteAccess(IWDG_TypeDef *IWDGx) 00186 { 00187 WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_ENABLE); 00188 } 00189 00190 /** 00191 * @brief Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers 00192 * @rmtoll KR KEY LL_IWDG_DisableWriteAccess 00193 * @param IWDGx IWDG Instance 00194 * @retval None 00195 */ 00196 __STATIC_INLINE void LL_IWDG_DisableWriteAccess(IWDG_TypeDef *IWDGx) 00197 { 00198 WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_DISABLE); 00199 } 00200 00201 /** 00202 * @brief Select the prescaler of the IWDG 00203 * @rmtoll PR PR LL_IWDG_SetPrescaler 00204 * @param IWDGx IWDG Instance 00205 * @param Prescaler This parameter can be one of the following values: 00206 * @arg @ref LL_IWDG_PRESCALER_4 00207 * @arg @ref LL_IWDG_PRESCALER_8 00208 * @arg @ref LL_IWDG_PRESCALER_16 00209 * @arg @ref LL_IWDG_PRESCALER_32 00210 * @arg @ref LL_IWDG_PRESCALER_64 00211 * @arg @ref LL_IWDG_PRESCALER_128 00212 * @arg @ref LL_IWDG_PRESCALER_256 00213 * @retval None 00214 */ 00215 __STATIC_INLINE void LL_IWDG_SetPrescaler(IWDG_TypeDef *IWDGx, uint32_t Prescaler) 00216 { 00217 WRITE_REG(IWDGx->PR, IWDG_PR_PR & Prescaler); 00218 } 00219 00220 /** 00221 * @brief Get the selected prescaler of the IWDG 00222 * @rmtoll PR PR LL_IWDG_GetPrescaler 00223 * @param IWDGx IWDG Instance 00224 * @retval Returned value can be one of the following values: 00225 * @arg @ref LL_IWDG_PRESCALER_4 00226 * @arg @ref LL_IWDG_PRESCALER_8 00227 * @arg @ref LL_IWDG_PRESCALER_16 00228 * @arg @ref LL_IWDG_PRESCALER_32 00229 * @arg @ref LL_IWDG_PRESCALER_64 00230 * @arg @ref LL_IWDG_PRESCALER_128 00231 * @arg @ref LL_IWDG_PRESCALER_256 00232 */ 00233 __STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(IWDG_TypeDef *IWDGx) 00234 { 00235 return (uint32_t)(READ_REG(IWDGx->PR)); 00236 } 00237 00238 /** 00239 * @brief Specify the IWDG down-counter reload value 00240 * @rmtoll RLR RL LL_IWDG_SetReloadCounter 00241 * @param IWDGx IWDG Instance 00242 * @param Counter Value between Min_Data=0 and Max_Data=0x0FFF 00243 * @retval None 00244 */ 00245 __STATIC_INLINE void LL_IWDG_SetReloadCounter(IWDG_TypeDef *IWDGx, uint32_t Counter) 00246 { 00247 WRITE_REG(IWDGx->RLR, IWDG_RLR_RL & Counter); 00248 } 00249 00250 /** 00251 * @brief Get the specified IWDG down-counter reload value 00252 * @rmtoll RLR RL LL_IWDG_GetReloadCounter 00253 * @param IWDGx IWDG Instance 00254 * @retval Value between Min_Data=0 and Max_Data=0x0FFF 00255 */ 00256 __STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(IWDG_TypeDef *IWDGx) 00257 { 00258 return (uint32_t)(READ_REG(IWDGx->RLR)); 00259 } 00260 00261 /** 00262 * @brief Specify high limit of the window value to be compared to the down-counter. 00263 * @rmtoll WINR WIN LL_IWDG_SetWindow 00264 * @param IWDGx IWDG Instance 00265 * @param Window Value between Min_Data=0 and Max_Data=0x0FFF 00266 * @retval None 00267 */ 00268 __STATIC_INLINE void LL_IWDG_SetWindow(IWDG_TypeDef *IWDGx, uint32_t Window) 00269 { 00270 WRITE_REG(IWDGx->WINR, IWDG_WINR_WIN & Window); 00271 } 00272 00273 /** 00274 * @brief Get the high limit of the window value specified. 00275 * @rmtoll WINR WIN LL_IWDG_GetWindow 00276 * @param IWDGx IWDG Instance 00277 * @retval Value between Min_Data=0 and Max_Data=0x0FFF 00278 */ 00279 __STATIC_INLINE uint32_t LL_IWDG_GetWindow(IWDG_TypeDef *IWDGx) 00280 { 00281 return (uint32_t)(READ_REG(IWDGx->WINR)); 00282 } 00283 00284 /** 00285 * @} 00286 */ 00287 00288 /** @defgroup IWDG_LL_EF_FLAG_Management FLAG_Management 00289 * @{ 00290 */ 00291 00292 /** 00293 * @brief Check if flag Prescaler Value Update is set or not 00294 * @rmtoll SR PVU LL_IWDG_IsActiveFlag_PVU 00295 * @param IWDGx IWDG Instance 00296 * @retval State of bit (1 or 0). 00297 */ 00298 __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx) 00299 { 00300 return (READ_BIT(IWDGx->SR, IWDG_SR_PVU) == (IWDG_SR_PVU)); 00301 } 00302 00303 /** 00304 * @brief Check if flag Reload Value Update is set or not 00305 * @rmtoll SR RVU LL_IWDG_IsActiveFlag_RVU 00306 * @param IWDGx IWDG Instance 00307 * @retval State of bit (1 or 0). 00308 */ 00309 __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx) 00310 { 00311 return (READ_BIT(IWDGx->SR, IWDG_SR_RVU) == (IWDG_SR_RVU)); 00312 } 00313 00314 /** 00315 * @brief Check if flag Window Value Update is set or not 00316 * @rmtoll SR WVU LL_IWDG_IsActiveFlag_WVU 00317 * @param IWDGx IWDG Instance 00318 * @retval State of bit (1 or 0). 00319 */ 00320 __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_WVU(IWDG_TypeDef *IWDGx) 00321 { 00322 return (READ_BIT(IWDGx->SR, IWDG_SR_WVU) == (IWDG_SR_WVU)); 00323 } 00324 00325 /** 00326 * @brief Check if all flags Prescaler, Reload & Window Value Update are reset or not 00327 * @rmtoll SR PVU LL_IWDG_IsReady\n 00328 * SR WVU LL_IWDG_IsReady\n 00329 * SR RVU LL_IWDG_IsReady 00330 * @param IWDGx IWDG Instance 00331 * @retval State of bits (1 or 0). 00332 */ 00333 __STATIC_INLINE uint32_t LL_IWDG_IsReady(IWDG_TypeDef *IWDGx) 00334 { 00335 return (READ_BIT(IWDGx->SR, IWDG_SR_PVU | IWDG_SR_RVU | IWDG_SR_WVU) == 0U); 00336 } 00337 00338 /** 00339 * @} 00340 */ 00341 00342 00343 /** 00344 * @} 00345 */ 00346 00347 /** 00348 * @} 00349 */ 00350 00351 #endif /* IWDG) */ 00352 00353 /** 00354 * @} 00355 */ 00356 00357 #ifdef __cplusplus 00358 } 00359 #endif 00360 00361 #endif /* __STM32L4xx_LL_IWDG_H */ 00362 00363 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Tue Jul 12 2022 17:38:50 by
