看门狗是为了防止程序跑飞,在程序跑飞后产生一个复位。它是一个12位的计数器,使用32KHZ的时钟最长计时时间为16秒。在调试模式和睡眠模式可以停止看门狗工作。 本次试验使用的正常模式,测试看门狗的工作。
WDT的内部框图
上电复位后看门狗计数器WDV的值为0xFFF,并进行减计数。WDT的工作模式示意图。在WDD到WDV之间是不能喂狗的,否则会导致错误。计数值在在WDV之下才能喂狗,然后看门狗计数器复位。 看门狗超时时间定义为 #defineWDT_PERIOD 3000 //3000MS
WDT的初始化函数,看门狗的时钟源为32KHZ慢时钟的128分频。
在上一节介绍的系统定时器中断里进行进行定时喂狗,这样程序就会一直跑下去不会复位。如果把喂狗语句去掉的话,狗溢出就会导致程序复位了。
主函数内容,也很简单
|