1、首先知道看门狗有三种工作方式:
①不工作
②当中断计数器
③看门狗
2、熟悉和看门狗的三个寄存器:
看门狗控制,对应的中断使能和中断标志。
看门狗控制
中断使能:
中断标志:
注:寄存器的每个位的说明不做解释,可以网上查找<MSP430x1xx Family User’s Guide (Rev. F)>pdf文件来查看寄存器位说明,英文不好的同学可以借助翻译软件来看。
3、熟悉寄存器之后,分别讲下三种状态怎么设置:
①不工作模式
就是关闭看门狗,因为看门狗时默认打开状态的,所以,如果不想用这个功能必须要先设置一下:
先写出需要控制的寄存器:WDTCTL;把需要需要改变的值赋值到这个寄存器中,这里因为寄存器的每个位在头文件之中都有自己明确的定义(define),所以可以简写成以下模式:
WDTCTL = WDTPW + WDTHOLD;
这里简单说下为啥这么写:
#define WDTPW (0x5A00u);,是看门狗的写入指令,必须有这个指令才能改变看门狗的控制位;
#define WDTHOLD (0x0080u);是看门狗的使能位,缺省是0为打开开门狗,置位则变成关闭看门狗;
下面的控制位也是这样可以查到响应的意思。
②定时计数模式:
定时计数模式分为八种计数模式:
/* WDT-interval times [1ms] coded with Bits 0-2 /
/ WDT is clocked by fSMCLK (assumed 1MHz) /
#define WDT_MDLY_32 (WDTPW+WDTTMSEL+WDTCNTCL) / 32ms interval (default) /
#define WDT_MDLY_8 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0) / 8ms " /
#define WDT_MDLY_0_5 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1) / 0.5ms " /
#define WDT_MDLY_0_064 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0) / 0.064ms " /
/ WDT is clocked by fACLK (assumed 32KHz) /
#defin