/**
* @brief WWDG去初始化
*
* 将WWDG寄存器重置为其默认的重置值。
*/
void WWDG_DeInit(void);
/**
* @brief WWDG设置预分频器
*
* 设置WWDG的预分频器值。预分频器用于降低LSI(低速内部时钟)的频率,从而调整WWDG计数器的递减速度。
*
* @param WWDG_Prescaler WWDG预分频器值。
*/
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);
/**
* @brief WWDG设置窗口值
*
* 设置WWDG的窗口值。这个值用于定义窗口看门狗的窗口大小。
*
* @param WindowValue WWDG窗口值。
*/
void WWDG_SetWindowValue(uint8_t WindowValue);
/**
* @brief WWDG使能中断
*
* 启用WWDG的中断功能。当WWDG计数器在窗口外重置时,会触发中断。
*/
void WWDG_EnableIT(void);
/**
* @brief WWDG设置计数器值
*
* 直接设置WWDG的计数器值。注意:通常不建议直接设置计数器值,除非有特殊需求。
*
* @param Counter WWDG计数器值。
*/
void WWDG_SetCounter(uint8_t Counter);
/**
* @brief WWDG使能并设置计数器值
*
* 启用WWDG并设置其计数器初始值。
*
* @param Counter WWDG计数器初始值。
*/
void WWDG_Enable(uint8_t Counter);
/**
* @brief WWDG获取标志状态
*
* 检查WWDG的早期唤醒中断标志(EWIF)是否被设置。
*
* @return 标志状态(SET 或 RESET)。
*/
FlagStatus WWDG_GetFlagStatus(void);
/**
* @brief WWDG清除标志
*
* 清除WWDG的早期唤醒中断标志(EWIF)。
*/
void WWDG_ClearFlag(void);
- 开启时钟
/*开启时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); //开启WWDG的时钟
- WWDG初始化
/*WWDG初始化*/
WWDG_SetPrescaler(WWDG_Prescaler_8); //设置预分频为8
WWDG_SetWindowValue(0x40 | 21); //设置窗口值,窗口时间为30ms
WWDG_Enable(0x40 | 54); //使能并第一次喂狗,超时时间为50ms
// 定义WWDG预分频器为1,即看门狗时钟源频率不被分频
#define WWDG_Prescaler_1 ((uint32_t)0x00000000)
// 定义WWDG预分频器为2,即看门狗时钟源频率被2分频
#define WWDG_Prescaler_2 ((uint32_t)0x00000080)
// 定义WWDG预分频器为4,即看门狗时钟源频率被4分频
#define WWDG_Prescaler_4 ((uint32_t)0x00000100)
// 定义WWDG预分频器为8,即看门狗时钟源频率被8分频
#define WWDG_Prescaler_8 ((uint32_t)0x00000180)
- 喂狗
WWDG_SetCounter(0x40 | 54); //重装计数器,喂狗