看门狗的使用
看门狗是在软件跑飞的情况下CPU自恢复的一个方式,当软件在选定的时间间隔内不能置位看门狗定时器(WDT),WDT就复位系统。看门狗可用于电噪声,电源故障或静电放电等恶劣工作环境或高可靠性要求的环境。如果系统不需要应用到看门狗,则WDT可配置成间隔定时器,在选定时间间隔内产生中断。WDT的特性如下:4个可选择的时间间隔看门狗定时器模式下产生中断请求时钟独立于系统时钟,WDT包括一个15位定时/计数器,它的频率由32.768KHz的晶振决定。用户不能查看计数器的值工作于各个电源模式。让用户了解几种看门狗定时器的使用。
1、看门狗概述
在CPU可能受到一个软件颠覆的情况下,看门狗定时器(WDT)用作一个恢复的方法。当软件在选定时间间隔内不能清除WDT时,WDT必须就复位系统。看门狗可用于受到电气噪音、电源故障、静电放电等影响的应用,或需要高可靠性的环境。如果一个应用不需要看门狗功能,可以配置看门狗定时器为一个间隔定时器,这样可以用于在选定的时间间隔产生中断。看门狗定时器的特性如下:
- 四个可选的定时器间隔
- 看门狗模式
- 定时器模式
- 在定时器模式下产生中断请求
WDT可以配置为一个看门狗定时器或一个通用的定时器。WDT模块的运行由WDCTL寄存器控制。看门狗定时器包括一个15位计数器,它的频率由32kHz时钟源规定。注意用户不能获得15位计数器的内容。在所有供电模式下,15位计数器的内容保留,且当重新进入主动模式,看门狗定时器继续计数。
看门狗模式
在系统复位之后看门狗定时器就被禁用。要设置WDT在看门狗模式必须设置WDCTLMODE[1:0]位为10。然后看门狗定时器的计数器从0开始递增。在看门狗模式下,一旦定时器使能,就不可以禁用定时器,因此,如果WDT位已经运行在看门狗模式下,再往WDCTLMODE[1:0]写入00或10就不起作用了。
WDT运行在一个频率为32768kHz(当使用32kHzxosC)的看门狗定时器时钟上。这个时钟频率的超时期限等于19ms,15625ms,025s和1,分别对应64,512,8192和32768的计数值设置。
如果计数器达到选定定时器的间隔值,看门狗定时器就为系统产生一个复位信号。如果在计数器达到选定定时器的间隔值之前,执行了一个看门狗清除序列,计数器就复位到0,并继续递增。看门狗清除的序列包括在一个看门狗时钟周期内写入0xA到WDCTLCLR[3:0],然后写入0x5到同一个寄存器位。如果这个序列没有在看门狗周期结束之前执行完毕,看门狗定时器就为系统产生一个复位信号。
当看门狗模式下,WDT使能,就不能通过写入WDCTLMODE[1:01位改变这个模式,且定时器间隔值也不能改变。
在看门狗模式下,WDT不会产生一个中断请求
定时器模式
要在一般定时器模式下设置WDT,必须把WDCTLMODE[1:01位设置为11。定时器就开始,且计数器从0开始递增。当计数器达到选定间隔值,定时器将产生一个中断请求(IRCON2.WDTIF/IEN2.WDTIE )在定时器模式下,可以通过写入1到WDCTL.CLR[0]来清除定时器内容。当定时器被清除,计数器的内容就置为0写入00或01到WDCTLMODE[1:01来停止定时器,并清除它为0。
定时器间隔由WDCTLINT[1:0]位设置。在定时器操作期间,定时器间隔不能改变,且当定时器开始时必须设置。在定时器模式下,当达到定时器间隔时,不会产生复位。注意如果选择了看门