STM32G474xx HAL 用户手册
stm32g4xx_ll_wwdg.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_ll_wwdg.h
00004   * @author  MCD Application Team
00005   * @brief   WWDG LL 模块的头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * 保留所有权利。
00011   *
00012   * 本软件的许可条款可在本软件组件根目录下的 LICENSE 文件中找到。
00013   * 如果本软件未附带 LICENSE 文件,则按原样提供。
00014   *
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* 定义以防止递归包含 -------------------------------------*/
00020 #ifndef STM32G4xx_LL_WWDG_H
00021 #define STM32G4xx_LL_WWDG_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* 包含 ------------------------------------------------------------------*/
00028 #include "stm32g4xx.h"
00029 
00030 /** @addtogroup STM32G4xx_LL_Driver
00031   * @{
00032   */
00033 
00034 #if defined (WWDG)
00035 
00036 /** @defgroup WWDG_LL WWDG
00037   * @{
00038   */
00039 
00040 /* 私有类型 -------------------------------------------------------------*/
00041 /* 私有变量 ---------------------------------------------------------*/
00042 /* 私有常量 ---------------------------------------------------------*/
00043 /* 私有宏 ------------------------------------------------------------*/
00044 /* 导出类型 ------------------------------------------------------------*/
00045 /* 导出常量 --------------------------------------------------------*/
00046 /** @defgroup WWDG_LL_Exported_Constants WWDG 导出常量
00047   * @{
00048   */
00049 
00050 /** @defgroup WWDG_LL_EC_IT IT 定义
00051   * @brief    可与 LL_WWDG_ReadReg 和 LL_WWDG_WriteReg 函数一起使用的 IT 定义
00052   * @{
00053   */
00054 #define LL_WWDG_CFR_EWI                     WWDG_CFR_EWI
00055 /**
00056   * @}
00057   */
00058 
00059 /** @defgroup WWDG_LL_EC_PRESCALER  PRESCALER
00060   * @{
00061   */
00062 #define LL_WWDG_PRESCALER_1                 0x00000000u                                               /*!< WWDG 计数器时钟 = (PCLK1/4096)/1 */
00063 #define LL_WWDG_PRESCALER_2                 WWDG_CFR_WDGTB_0                                          /*!< WWDG 计数器时钟 = (PCLK1/4096)/2 */
00064 #define LL_WWDG_PRESCALER_4                 WWDG_CFR_WDGTB_1                                          /*!< WWDG 计数器时钟 = (PCLK1/4096)/4 */
00065 #define LL_WWDG_PRESCALER_8                 (WWDG_CFR_WDGTB_0 | WWDG_CFR_WDGTB_1)                     /*!< WWDG 计数器时钟 = (PCLK1/4096)/8 */
00066 #define LL_WWDG_PRESCALER_16                WWDG_CFR_WDGTB_2                                          /*!< WWDG 计数器时钟 = (PCLK1/4096)/16 */
00067 #define LL_WWDG_PRESCALER_32                (WWDG_CFR_WDGTB_2 | WWDG_CFR_WDGTB_0)                     /*!< WWDG 计数器时钟 = (PCLK1/4096)/32 */
00068 #define LL_WWDG_PRESCALER_64                (WWDG_CFR_WDGTB_2 | WWDG_CFR_WDGTB_1)                     /*!< WWDG 计数器时钟 = (PCLK1/4096)/64 */
00069 #define LL_WWDG_PRESCALER_128               (WWDG_CFR_WDGTB_2 | WWDG_CFR_WDGTB_1 | WWDG_CFR_WDGTB_0)  /*!< WWDG 计数器时钟 = (PCLK1/4096)/128 */
00070 /**
00071   * @}
00072   */
00073 
00074 /**
00075   * @}
00076   */
00077 
00078 /* 导出宏 ------------------------------------------------------------*/
00079 /** @defgroup WWDG_LL_Exported_Macros WWDG 导出宏
00080   * @{
00081   */
00082 /** @defgroup WWDG_LL_EM_WRITE_READ 通用写和读寄存器宏
00083   * @{
00084   */
00085 /**
00086   * @brief  在 WWDG 寄存器中写入一个值
00087   * @param  __INSTANCE__ WWDG 实例
00088   * @param  __REG__ 要写入的寄存器
00089   * @param  __VALUE__ 要写入寄存器的值
00090   * @retval 无
00091   */
00092 #define LL_WWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
00093 
00094 /**
00095   * @brief  从 WWDG 寄存器中读取一个值
00096   * @param  __INSTANCE__ WWDG 实例
00097   * @param  __REG__ 要读取的寄存器
00098   * @retval 寄存器值
00099   */
00100 #define LL_WWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
00101 /**
00102   * @}
00103   */
00104 
00105 /**
00106   * @}
00107   */
00108 
00109 /* 导出函数 --------------------------------------------------------*/
00110 /** @defgroup WWDG_LL_Exported_Functions WWDG 导出函数
00111   * @{
00112   */
00113 
00114 /** @defgroup WWDG_LL_EF_Configuration 配置
00115   * @{
00116   */
00117 /**
00118   * @brief  使能窗口看门狗。看门狗在复位后总是禁用的。
00119   * @note   通过设置 WWDG_CR 寄存器中的 WDGA 位来使能它,
00120   *         之后除了复位外无法再次禁用。
00121   *         此位由软件置位,并且仅在复位后由硬件清除。
00122   *         当 WDGA = 1 时,看门狗可以产生复位。
00123   * @rmtoll CR           WDGA          LL_WWDG_Enable
00124   * @param  WWDGx WWDG 实例
00125   * @retval 无
00126   */
00127 __STATIC_INLINE void LL_WWDG_Enable(WWDG_TypeDef *WWDGx)
00128 {
00129   SET_BIT(WWDGx->CR, WWDG_CR_WDGA);
00130 }
00131 
00132 /**
00133   * @brief  检查窗口看门狗是否已使能
00134   * @rmtoll CR           WDGA          LL_WWDG_IsEnabled
00135   * @param  WWDGx WWDG 实例
00136   * @retval 位的状态(1 或 0)。
00137   */
00138 __STATIC_INLINE uint32_t LL_WWDG_IsEnabled(const WWDG_TypeDef *WWDGx)
00139 {
00140   return ((READ_BIT(WWDGx->CR, WWDG_CR_WDGA) == (WWDG_CR_WDGA)) ? 1UL : 0UL);
00141 }
00142 
00143 /**
00144   * @brief  将看门狗计数器值设置为提供的值(7 位 T[6:0])
00145   * @note   写入 WWDG_CR 寄存器时,始终在最高位 b6 写入 1 以避免立即产生复位
00146   *         此计数器每 (4096 x 2expWDGTB) 个 PCLK 周期递减一次
00147   *         当它从 0x40 滚动到 0x3F 时(位 T6 被清除)会产生复位
00148   *         将计数器设置为低于 0x40 会导致立即复位(如果 WWDG 已使能)
00149   * @rmtoll CR           T             LL_WWDG_SetCounter
00150   * @param  WWDGx WWDG 实例
00151   * @param  Counter 0..0x7F(7 位计数器值)
00152   * @retval 无
00153   */
00154 __STATIC_INLINE void LL_WWDG_SetCounter(WWDG_TypeDef *WWDGx, uint32_t Counter)
00155 {
00156   MODIFY_REG(WWDGx->CR, WWDG_CR_T, Counter);
00157 }
00158 
00159 /**
00160   * @brief  返回当前看门狗计数器值(7 位计数器值)
00161   * @rmtoll CR           T             LL_WWDG_GetCounter
00162   * @param  WWDGx WWDG 实例
00163   * @retval 7 位看门狗计数器值
0