define Pre_scale_Word 0x3c//0.68s
sfr WDT_CONTR 0xc1
..................................
while(1)
{
WDT_COUNTR=Pre_scale_Word
....................................
}
看门狗及其溢出时间 = (12 * Pre_scale *32768)/Oscillator Frequency
先根据看门狗计数器的位数 和系统的时钟周期,算一下计满数需要的时间,就是说在这个时间内看门狗计数器是不会装满的,然后在这个时间内告诉它重新开始计数,就是把计数器清零,这个过程叫喂狗 。
这样隔一段时间喂一次狗,只要程序正常运行他就永远计不满,一旦出现死循环之类的故障,没有及时来清零计数器,就会导致装满了溢出,他就重启系统,这就是看门狗的看门原理。每种单片机的看门狗实现方法不尽相同,但是原理都一样,而且看门狗都是启动了之后就不能被关闭,只能系统复位才能关闭 。
设置“看门狗”的一般步骤如下:
1、设置“看门狗”相关寄存器, 启动“看门狗”。
2、隔一段时间清零一次,“喂狗”。
3、如果程序正常,一直运行;如果程序出错,没有按时“喂狗”,“看门狗”就在溢出的时候复位系统。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)