你这是还没明白看门狗是干嘛用的。看门狗,从他的名字来看,首先作用是看门的,其次是一条狗。
我从以下几个方面说明一下这个问题。
1、为什么用看门狗:我们程序在flash中运行的时候,有时候遇到强干扰或者一些很特殊的情况,本来应该运行第100行的程序,突然跑到了500行的代码中运行了,跑乱了,而500行要么是错误代码,要么是我们没有写程序的位置。也就是说,不管如何,现在程序运行错乱,不正常,而且将会一直不正常下去,这个情况我们通常称之为跑飞。这个时候,我们希望单片机有一个机制,就是负责看着程序这个大门,一旦程序错乱,立马应对处理。
2、如何看门:我们学单片机,其实都学过定时器这个模块,其实看门狗就是一个定时器而已。我就拿最简单的标准51单片机的T0来说吧,比如定义成模式1的时候,用11.0592M晶振,那么从0加到溢出,一共时间大概是70多ms,我就暂定为70ms吧。我们打开看门狗定时器这个模块后,这个模块是独立于我们的CPU程序之外的一个模块,只要打开了,他就不会受到程序的控制。那么我们程序就运行,运行,突然跑飞了,程序运行不正常了,并且会一直不正常下去。但是由于我们打开了看门狗,这个定时器会一直运行,当运行到70ms的时候,发生溢出,这个时候看门狗会直接把我们的单片机给复位,让程序重新运行,避免跑飞。
3、如何喂狗:由于我们设定了一个70ms的定时,那么及时我们程序正常运行的话,到了70ms,也会自动复位,这是我们不希望的,所以我们要经常性的重新给这个定时器初值重新赋值,比如TH0 = 0,TL0 = 0.经常这样写就可以避免定时器溢出了,既然定时器不溢出了,单片机也就不会复位了。
4、多久喂狗:这个就需要根据我们的程序经验了,比如我们知道我们的程序运行系统,从最开始运行到某一个位置,循环一次最大是10ms,那么循环5次最大也不会超过50ms,我们就50ms给把定时器清零一次,所以只要我们50ms喂一次狗,那么我们的程序永远不会由于看门狗超时而复位。而一旦受到干扰了,我们的喂狗程序就不会起到任何作用,所以这个时候我们就可以通过看门狗的自动复位,来让我们的错乱的系统恢复正常。
不知道我说这么多你能不能看懂。单片机设置看门狗的主要作用就是防止程序跑飞,如果你的系统很简单,要求不高,那就上来关闭看门狗就可以了,用不到。如果你的系统比较复杂,干扰较强,那么就需要通过这种方式,打开看门狗,定时喂狗。一旦程序跑飞,看门狗可以自动复位,让系统重新正常运行,不会处于无限的死机状态。
你这是还没明白看门狗是干嘛用的。看门狗,从他的名字来看,首先作用是看门的,其次是一条狗。
我从以下几个方面说明一下这个问题。
1、为什么用看门狗:我们程序在flash中运行的时候,有时候遇到强干扰或者一些很特殊的情况,本来应该运行第100行的程序,突然跑到了500行的代码中运行了,跑乱了,而500行要么是错误代码,要么是我们没有写程序的位置。也就是说,不管如何,现在程序运行错乱,不正常,而且将会一直不正常下去,这个情况我们通常称之为跑飞。这个时候,我们希望单片机有一个机制,就是负责看着程序这个大门,一旦程序错乱,立马应对处理。
2、如何看门:我们学单片机,其实都学过定时器这个模块,其实看门狗就是一个定时器而已。我就拿最简单的标准51单片机的T0来说吧,比如定义成模式1的时候,用11.0592M晶振,那么从0加到溢出,一共时间大概是70多ms,我就暂定为70ms吧。我们打开看门狗定时器这个模块后,这个模块是独立于我们的CPU程序之外的一个模块,只要打开了,他就不会受到程序的控制。那么我们程序就运行,运行,突然跑飞了,程序运行不正常了,并且会一直不正常下去。但是由于我们打开了看门狗,这个定时器会一直运行,当运行到70ms的时候,发生溢出,这个时候看门狗会直接把我们的单片机给复位,让程序重新运行,避免跑飞。
3、如何喂狗:由于我们设定了一个70ms的定时,那么及时我们程序正常运行的话,到了70ms,也会自动复位,这是我们不希望的,所以我们要经常性的重新给这个定时器初值重新赋值,比如TH0 = 0,TL0 = 0.经常这样写就可以避免定时器溢出了,既然定时器不溢出了,单片机也就不会复位了。
4、多久喂狗:这个就需要根据我们的程序经验了,比如我们知道我们的程序运行系统,从最开始运行到某一个位置,循环一次最大是10ms,那么循环5次最大也不会超过50ms,我们就50ms给把定时器清零一次,所以只要我们50ms喂一次狗,那么我们的程序永远不会由于看门狗超时而复位。而一旦受到干扰了,我们的喂狗程序就不会起到任何作用,所以这个时候我们就可以通过看门狗的自动复位,来让我们的错乱的系统恢复正常。
不知道我说这么多你能不能看懂。单片机设置看门狗的主要作用就是防止程序跑飞,如果你的系统很简单,要求不高,那就上来关闭看门狗就可以了,用不到。如果你的系统比较复杂,干扰较强,那么就需要通过这种方式,打开看门狗,定时喂狗。一旦程序跑飞,看门狗可以自动复位,让系统重新正常运行,不会处于无限的死机状态。
举报