|
所谓的看门狗功能,是指可以监控程序是否由于某些干扰或者错误而跑飞。其原理就是发生故障的时间满足规定的定时时间后,产生一个非屏蔽中断,使系统复位。这样当在调试程序或预计程序在某个地方可能瞬时发生错误时(如外部电路干扰),选用设置看门狗定时中断可以避免程序跑飞。
当然,它也可以用作一般的定时功能。
不过实际上,由于看门狗定时器(作看门狗使用时)需要很严密的设置(否则程序容易经常重启),所以很多人都不会使用这项功能。所以,程序一开始就加上一句话:WDTCTL=WDTPW+WDTHOLD来关闭看门狗。
2.1 WDT_A的简介
特点:
①有8种可选定时时间;
②看门狗模式;
③定时器模式;
④看门狗控制寄存器存在密码保护;
⑤时钟源可选,且具有时钟源意外保护;
⑥可以被终止来节省能源;
⑦无论是用作看门狗还是定时器,其间隔时间都无法随意设定,只能从8种设定中选择,当然可以通过更改时钟频率来间接更改时间;
注意默认设置:程序启动,看门狗即启动;监控周期为32ms/32.768KHZ(也就是说当看门狗的时钟频率为32.768KHZ时,每过32ms,如果不软件清空,程序就会重启);所用的时钟源为SMCLK(实际频率不是32.768KHZ,后面会提到)。
2.2 WDT_A的寄存器及操作
注意:所有的寄存器都存字操作和字节操作模式。例如对WDTCTL寄存器直接赋值是字操作,你也可以通过WDTCTL_L(低字节寄存器)、WDTCTL_H来进行字节操作赋值。
该类寄存器只能赋值不要进行“|=、&=”等逻辑操作。
2.2.1看门狗控制寄存器WDTCTL(Watchdog Timer Control)
该寄存器是一个16位带有密码保护的读写寄存器。所谓的密码保护,是为了防止该寄存器被不小心篡改。那么是如何实现密码保护呢?事实上,该寄存器的高字节用来存放口令,低字节才是控制数据。写口令为05Ah,读口令为069h,任何和口令不一样的高字节操作都会导致系统复位。
|
|