看门狗
看门狗动画
**看门狗:使用的是外部时钟,即使主频不工作了,看门狗也能正常工作。只要在到达喂狗时间的上限前喂狗即表示程序是正常的,这点和窗口看门狗是有区别的。另外**看门狗是**于整个系统之外的,这也是**看门狗名字的由来,他有自己**的时钟,不受整个系统的影响,所以**看门狗主要用来监控硬件上的错误。
从时钟树可以看出**看门狗拥有自己的**时钟源,来自内部低速时钟,时钟频率为32KHz。如果PLL崩溃了并不会影响**看门狗的运行,但是程序将奔溃无法“喂狗”,当看门狗计数器的值减为0时,看门狗认为系统发生故障将触发系统复位。
看门狗的本质是一个定时器,在启动后,需要在一定时间内再给它一个信号,俗称“喂狗”,如果没有按时“喂狗”,说明MCU可能处于非正常状态,这时看门狗就向MCU发送个复位信号,使整个系统重启,重新进入正常的工作状态。看门狗命令在程序的中断中拥有最高的优先级。
看门狗的作用是系统CPU正常工作时定时给看门狗喂狗,复位定时器,如果系统出问题,没有给看门狗喂狗,看门狗就由于超时将CPU复位。一般工程都会使用两个看门狗,一个是**看门狗,主要用于在代码跑飞之后复位使用,一个是窗口看门狗,主要用于在复位前对于一些重要数据进行保存。小数据量一般可以保存进单片机自己的FLASH中,下次上电还会存在。
窗口看门狗:使用芯片内部时钟。喂狗的时间既有上限又有下限,即喂狗太早或者太晚都不行,比如我要求你在0.8s到0.9s内完成喂狗动作,如果你在0.8s之前或者在0.9s之后喂狗都是不可以的,都会认为MCU出现了异常,从而复位MCU。窗口看门狗是系统内部故障探测器,如果系统时钟出现了错误,那么窗口看门狗也就失去了作用,主要用于监视软件的错误。
**点了点头:“看来我要学的东西很多呢,对了,这么说是不是林川想起了什么,然后对窃取他剧本的吴小天产生报复?或者是威胁,造成了吴小天的自杀?”