Hal Drivers for L4

Dependents:   BSP OneHopeOnePrayer FINAL_AUDIO_RECORD AudioDemo

Fork of STM32L4xx_HAL_Driver by Senior Design: Sound Monitor

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers stm32l4xx_ll_iwdg.h Source File

stm32l4xx_ll_iwdg.h

Go to the documentation of this file.
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>&copy; 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