Hal Drivers for L4
Dependents: BSP OneHopeOnePrayer FINAL_AUDIO_RECORD AudioDemo
Fork of STM32L4xx_HAL_Driver by
stm32l4xx_ll_iwdg.h
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_ll_iwdg.h 00004 * @author MCD Application Team 00005 * @version V1.1.0 00006 * @date 16-September-2015 00007 * @brief Header file of IWDG LL module. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© COPYRIGHT(c) 2015 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)0x0000AAAA) /*!< IWDG Reload Counter Enable */ 00068 #define LL_IWDG_KEY_ENABLE ((uint32_t)0x0000CCCC) /*!< IWDG Peripheral Enable */ 00069 #define LL_IWDG_KEY_WR_ACCESS_ENABLE ((uint32_t)0x00005555) /*!< IWDG KR Write Access Enable */ 00070 #define LL_IWDG_KEY_WR_ACCESS_DISABLE ((uint32_t)0x00000000) /*!< 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 00089 #define LL_IWDG_SR_RVU IWDG_SR_RVU 00090 #define LL_IWDG_SR_WVU IWDG_SR_WVU 00091 00092 /** 00093 * @} 00094 */ 00095 00096 /** @defgroup IWDG_LL_EC_PRESCALER PRESCALER 00097 * @{ 00098 */ 00099 #define LL_IWDG_PRESCALER_4 ((uint32_t)0x00000000) /*!< 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 Specifies the IWDG down-counter reload value 00240 * @rmtoll RLR RL LL_IWDG_SetReloadCounter 00241 * @param IWDGx IWDG Instance 00242 * @param Counter 0..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 0..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 Specifies 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 0..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 0..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) == 0); 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****/ 00364
Generated on Tue Jul 12 2022 11:35:16 by 1.7.2