MSP430看门狗的主要特点:
•WDT是一个16位计数器
•有两种模式,看门狗模式和间隔定时器模式
•可选时钟源
•需要口令才能对其操作
一、控制寄存器
看门狗的主要功能是,当程序发生故障时能使软件系统重新启动;
控制寄存器WDTCTL,高8位被用作口令,低8位用于控制;
写入指令时必须正确写入口令,若口令错误将导致系统复位;
寄存器WDTCTL定义:
WDTHOLD:启动或关闭看门口,0开启,1关闭;
WDTNMIES:NMI中断触发方式,0上升沿触发,1下降沿触发;
WDTNMI:RST/NMI引脚功能选择,0复位引脚,1NMI中断引脚;
WDTTMSEL:看门狗定时器模式选择,0看门狗模式,1定时器模式;
WDTCNTCL:看门狗定时器计数器清0,0无操作,1WDTCNT == 0000h;
WDTSSEL:时钟源选择,0SMCLK,1ACLK;
WDTISx:定时长度选择,00计数次数为32768,01计数次数为8192,10计数次数为512,11计数次数为64;
二、看门狗模式
在看门狗模式下,有一个 Clock Fail-Safe功能,是用来保证看门狗时钟源正常的,例如,用来给看门狗提供时钟的ACLK或SMCLK出现了故障,那么看门狗的时钟源将会自动切换到MCLK,这个功能同样会影响低功耗功能的使用;
看门狗设置方式:
时钟源SMCLK = 1MHz;
WDTCTL = WDTPW+WDTCNTCL; //32ms
WDTCTL = WDTPW+WDTCNTCL+WDTIS0;//8ms
WDTCTL = WDTPW+WDTCNTCL+WDTIS1;//0.5ms
WDTCTL = WDTPW+WDTCNTCL+WDTIS1+WDTIS0;// 0.064ms
在msp430f2619.h中对看门狗延时设置均有说明,如下图:
三、间隔定时器模式
间隔定时器模式下,达到设定的时间后WDTIFG标志就会置位,如果设置了中断使能(WDTIE = 1),则会触发间隔定时器中断,在中断服务程序中处理之后,WDTIFG标志位会自动清0;
间隔定时器模式,时钟源SMCLK = 1MHz情况下,
WDTCTL = WDTPW+WDTTMSEL+WDTCNTCL; //定时32ms
WDTCTL = WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0; //定时8ms
WDTCTL = WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1; //定时0.5ms
WDTCTL = WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0;//定时0.064ms
在msp430f2619.h中对间隔定时器设置也有说明,如下图:
四、贴上代码
void WatchDog_Open(void)
{
//1MHz
WDTCTL = WDT_MRST_32;//32ms
}
void WatchDog_FeedDog(void)
{
WDTCTL = WDTPW + WDTCNTCL;//清计数器
}
void WatchDog_Stop(void)
{
WDTCTL = WDTPW + WDTHOLD;
}
/
void IntervalTimer_Open(void)//间隔定时器模式
{
//1MHz
WDTCTL = WDT_MDLY_8;//interval timer mode,WDTCNT = 0000H,SMCLK,8192
IE1 |= WDTIE;
}
#pragma vector = WDT_VECTOR //中断处理函数
__interrupt void WDT_ISR(void)//8192/1000000 = 8.192ms
{
;//中断处理
}