|
STM32G474xx HAL 用户手册
|
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