WWDG_SetCounter(0x40+54); //喂狗,设置最大超时时间为50ms } }
注:WWDG_SetCounter 函数设置的看门狗计数器值和WWDG_SetWindowValue函数设置的窗口值取值范围都是0x40~0x7F。但必须还要满足配置的计数器值必须大于窗口值才有意义。 关于函数void WWDG_SetPrescaler (u32 WWDG_Prescaler)的入参取值决定了WWDG预分频系数值,它们之间有一个对应关系,如下表所示。
一、概述1、WWDG看门狗简介 IWDG看门狗存在这样一个问题,如果在喂狗的间隔期间,程序跑飞后又正确归位,独立看门狗无法发现这样的错误,程序将存在很大的危险。与IW,21ic电子技术开发论坛
void WWDG_Enable(uint8_t Counter); 注意计数器最大值不能大于 OX7F。 库函数还提供了一个独立设置计数器值的函数 void WWDG_SetCounter(uint8_t Counter); 2.5编写 WWDG 中断服务函数 WWDG 中断函数名如下:WWDG_IRQHandler 在中断内要进行喂狗,可以直接调用 WWDG_SetCounter()函数,给它传递一个窗口值即可,...
2、设置预分频值和窗口值WWDG_SetPrescaler()/WWDG_SetWindowValue() 这些值一旦启动就不恩那个更改,直到MCU Reset 3、使能WWDG WWDG_Enable() 4、喂狗或者不喂狗(WWDG_SetCounter()) 第一次,我们不喂狗,可以看到LED在不停地闪烁。说明MCU被reset了 ...
WWDG_EnableIT(); // 使能窗口看门狗中断 // 窗口看门狗中断处理函数 void WWDG_IRQHandler(void) { WWDG_SetCounter(0x7f); // 重置计数器值为0x7F(喂狗操作) WWDG_ClearFlag(); // 清除中断标志 printf("[WWDG] Feed dog! Counter reset to 0x7Fn"); ...
WWDG_EnableIT(); }voidWWDG_Feed(void) { WWDG_SetCounter( WWDG_CNT ); } 中断处理函数: voidWWDG_IRQHandler(void) { WWDG_ClearFlag(); green(ON); } main.c文件如下: #include"stm32f10x.h"#include"bsp_led.h"#include"bsp_key.h"#include"bsp_wwdg.h"voidSOFT_Delay(__IO u32 nCount);...
WWDG_SetCounter(0x70); //喂狗 printf("WWDG_IRQHandler.\n"); } WWDG_ClearFlag(); } void WWDG_init() { NVIC_InitTypeDef nvic = { WWDG_IRQn, 2, 2, ENABLE }; RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); //使能WWDG时钟 ...
IWDG_SetPrescaler(IWDG_Prescaler_16); //根据公式:重装值 = ( 1000ms / Tlsi(4KHz = 0.025ms) / PR预分频数(16) )-1 IWDG_SetReload(2499); IWDG_ReloadCounter();//重装值装载 IWDG_Enable();//独立看门狗启动 } MyWWDG.h #ifndef __MYIWDG_H ...
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 2)设置独立看门狗的预分频系数和重装载值 设置看门狗的分频系数的函数是: void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //设置 IWDG 预分频值 设置看门狗的重装载值的函数是: void IWDG_SetReload(uint16_t Reload); //设置 IWDG 重装载值 ...