
一、 WDT 介绍1、 WDT 计数器(WDTCNT)WDTCNT 是一个16位的 不能直接用软件访问递增计数器。 可通过控制寄存器WDTCTL 来控制 WDTCNT 和 选择时间间隔。通过 控制寄存器WDTCTL中的控制位WDTSSEL来选择WDTCNT时钟源。2、WDT 上电激活在一个PUC之后 WDT 模块在安全模式下自动配置通过使用DCOCLK用一个最初的32768个时钟周期复位间隔。用户必须在初始复位间隔期满前 设置、暂停或清零WDT 否则会触发 PUC复位。3、WDT 模块工作模式可通过控制位WDTTMSEL配置为两种模式 0 看门狗模式安全装置模式 1 间隔计数模式该模式用于提供周期性中断。选定的时间间隔期满时WDTIFG标志位被置位但并不会产生一个 PUC复位且 WDTIFG使能位 WDTIE保持不变。当 WDTIE 和 GIE 置位时 WDTIFG标志请求一个中断中断请求被服务时标志位会自动复位 也可通过软件复位。注意 为了 避免出现意外更改时钟源前应该暂停WDT 。并且在更改间隔时间时应该配和单指令 WDTCNTCL 1 一起使用。5、 WDT 中断在安全装置模式下WDTIFG标志位 源自一个复位向量中断。 如果该标志被置位 那么WDT 就会通过 超时 或者 违反安全密钥 来初始化复位状态。该模式下WDTIFG会保持直到软件复位 。如果被清零复位就是通过一个不同的源引起的。在间隔定时器模式下如果WDTIE 和 GIE置位 WDTIFG置位时会触发间隔定时器中断 。当中断被服务后WDTIFG标志自动复位或可软件复位。注意 在间隔定时器模式下的中断向量地址 与 在安全装置模式下是不同的。6、 时钟故障安全操作在安全装置模式下 WDT的时钟不能被禁用。例如 如果 ACLK是WDT时钟源则LPM4将无法使用。 另外 如果 ACLK 或 SMCLK 被选作失败时 WDT 时钟源会自动切换到 MCLK 。如果此时 MCLK来源于晶振恰好晶振失效 那么失效保护功能将激活DCOCLK 作为MCLK时钟源 。二、功能模块结构三、 寄存器资源1、 WDTCTL 寄存器WDTCTL寄存器是 16位的、受密码保护的、读写寄存器任何读取和写入访问必须使用 字指令 且 高字节写入密码为 5Ah 。写入密码错误无论定时器处于哪种模式都会触发 PUC系统复位 。15141312111098WDTTPWrw-0rw-1rw-1rw-0rw-1rw-0rw-0rw-176543210WDTHOLDWDTNMIESWDTNMIWDTTMSELWDTCNTCLWDTSSELWDTISxrw-0rw-0rw-0rw-0r(0)-wrw-0rw-0rw-0WDTPW 安全装置定时器 密码。读为 69h 写必须5Ah其他值会产生PUC注意区分 FCTLx 密码 读 96h 写A5hWDTHOLD 安全装置定时器 保持。 该位阻止了安全装置定时器 。0 --- 不停止看门狗计时器 1 --- 停止看门狗计时器 在不使用WDT时节省功耗WDTNMIES WDT 的 NMI沿选择。 当WDTNMI 1 选择NMI功能时该位才有意义。0 --- NMI在上升沿上 1 --- 下降沿注意 修改该位可以触发 NMI中断 为避免发生意外NMI 需在 WDTIE 0时修改WDTNMI WDT NMI选择。 0 --- RST#/NMI 引脚为复位功能 1 --- NMI功能WDTTMSEL WDT 模式选择。 0 --- 看门狗模式 1 --- 间隔定时器模式WDTCNTCL WDT 计数清零。 置 1 清零计数值 WDTCNT 0000h 并WDTCNCL被自动复位WDTSSEL WDT 时钟源选择。 0 --- SMCLK 1 --- ACLKWDTISx WDT 间隔选择。 00 -- 看门狗时钟源/32768 01 -- /8192 10 -- /512 11 -- /642、 IE1寄存器 ------ NMIIE 、 WDTIE3、 IFG1寄存器 ------ NMIIFG 、 WDTIFG四、实例#include msp430.h /* * 上电默认开启 看门狗模式。 * 该实例配置为间隔定时器模式观察现象 */ int main(void) { WDTCTL WDT_MDLY_32;//SMCLK-时钟1MHz 32ms中断一次 //WDT_ADLY_250 ; ACLK-32KHz(需外接晶振) ,250ms中断一次 IE1 | WDTIE; P1DIR | 0X01; //注意间隔定时器模式中断还需开启 GIE __bis_SR_register(LPM0_bits GIE); } #pragma vector WDT_VECTOR; __interrupt void WDTTimer_ISR(void) { P1OUT ^ 0x01; //IFG1 ~WDTIFG ; //处理中断服务自动清零也可软件清零 }