测试看门狗
开启看门狗,程序跑飞时,看门狗会复位系统,尝试恢复系统。
主程序:
#include "...."
int main(void)
{
fun_init(); //延时函数、其他外设初始化
IWDG_Init(6,350);//初始化并开启看门狗
while(1)
{
IWDG_Feed(); //喂狗
TASK_1(); //任务1
TASK_2();//任务2
}
}
我的测试方法:
看门狗的时钟和主频不相同,设置使用外部晶振;在系统正常工作的时候用一根导线将晶振两只脚短接,主时钟没了,系统就相当于跑飞了,即没有正常喂狗;
恢复外部时钟一段时间后,按理应该是会产生看门狗复位;可是测试了几次后发现:系统经常会出现跑飞但系统并不重启的情况。
几经查找调试,在系统时钟初始化前 初始化看门狗,喂狗位置不变,按上文测试方法测试,测试通过