目录
- /*
- TODO 在功能模块中
- IWDG 配置函数有两个形参
- prv 用来设置预分频值 可以为IWDG_Prescaler_4、IWDG_Prescaler_8等
- rlv 用来设置重加载值 ----> 初始值
- */
- void IWDG_Configuration(uint8_t prv ,uint16_t rlv)
- {
- // 使能 预分频寄存器 PR 和重装载寄存器 RLR 可写
- IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
- IWDG_SetPrescaler(prv); // 设置预分频器值
- IWDG_SetReload(rlv); // 设置重装载寄存器值
- IWDG_ReloadCounter(); // 把重装载寄存器的值放到计数器中
- IWDG_Enable(); // 使能 IWDG
- }
-
- /*
- 喂狗函数:把重装载寄存器的值放到计数器中,喂狗,防止 IWDG 复位
- 当计数器的值减到 0 的时候会产生系统复位
- */
- void IWDG_Feed(void)
- {
- IWDG_ReloadCounter();
- }
-
-
-
- /*
- TODO 在main模块中
- 先检查 IWDG_Check();
- 后配置 IWDG_Configuration(IWDG_Prescaler_64 ,625);
- */
- /* 检查是否为独立看门狗复位 */
- void IWDG_Check(void)
- {
- if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) == SET){
- /* 独立看门狗复位 */
-
- // 工作内容
- // ....
- RCC_ClearFlag(); // 清除标志
- /*如果一直不喂狗,会一直复位 | 在 1s 时间内喂狗 */
- }else{
- /*不是独立看门狗复位(可能为上电复位或者手动按键复位之类的) */
-
- // 工作内容
- // ....
- }
- }