看门狗实际上就是一个定时计数器,用来防止程序发生意外而设置的一个监测装置,只要看门狗功能打开,看门狗计数器的计数值是会不停的增加,程序正常运行时,需要在看门狗计数器达到最大值之前(就是看门狗最大计数时间之内)将其清空,使其重新开始计数,这就是“喂狗”。
如果程序跑飞,或者发生什么意外状况,而使得“喂狗” *** 作不能正常进行,看门狗计数器会不断增加,直到溢出,然后单片机复位,从而避免单片机跑飞以后失控而导致死机。
主程序一般有个无限循环while(1){...}WDT初始化程序应该放在这个循环的前面;
喂狗程序一般放在这个循环内部。如:
void main(void)
{
//其他初始化程序...
Init_WDT
while(1)
{
Feed_Dog
//doing your jog
}
}
一种方法是在delay里面喂,这种方法很适用,一劳永逸。第二种就是delay的实参减小,多次调用delay,调用中间进行喂狗,这种比较麻烦。书上也有说错的时候。还是根据实际情况来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)