用的是STC12C5A60AD,以前的是小程序没用到看门狗,现在开始用到
程序格式大概如下:
main()
{
// A
init_delay(); // 初始化中灯闪几下,时间大于狗的时间
........
WDT = xxxx; // B
while(1)
{
work_delay();
WDT = xxxx; // C
}
}
我对看门狗的理解是:初始化后从B点开始计时,到达C点后喂狗,然后再循环下一次的,若没到规定的时间喂狗则CPU复位,然后初始化再从B点开始计时。但我发现复位时看门狗就在计时,相当于在A点的时候就在计时,然后就一直在初始化那复位复位的。最后我把初始化时间改小了在看门狗的时间之内,才可以正常运行。
我想问的是:是我的理解有错误还是这个STC有什么特别之处? |