看门狗
看门狗:watch dog timer看门狗计时器(WDT)
是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗置零(喂狗),重新开始计数。如果看门狗增加到设定值就认为程序没有正常工作,强制整个系统复位。
目的是防止程序代码溢出。工作机制是:通过计数器不断的计数,一个机器周期计一个数,如果溢出程序就复位,又从头开始运行。
喂狗是防止溢出,每隔一段时间给看门狗重新赋一个初值,保证不溢出。稳定持续不断的喂狗,这样的话保证代码是正常运行的。
如果有异常它就无法进行喂狗,系统就会复位。这就是看门狗的作用。
如果我们选择12兆晶振,机器周期就是一微秒,一微秒16位的计数器是65536,大概是65毫秒,只要小于65毫秒去进行喂狗,就能保证看门狗不会溢出。
一般用于无人值守的设备中安装,当程序异常时,看门狗溢出,系统自动复位,重新开始运行。程序正常运行时,程序正常恰时喂狗,看门狗正常运行。
看门狗是一定时器电路:
输入端:喂狗
输出端:输出到MCU的RST端
MCU正常工作时,每隔一段时间输出喂狗: WDT=0
当程序跑飞时,WDT溢出,输出端给MCU复位信号