||
定时器在单片机系统中是非常重要的部分,它在事件控制与管理方面有着重要的应用。MSP430F149主要有看门狗,定时器A(Timer_A)和定时器B(Timer_B)等模块。
定时器资源功能 说明:
(1)看门狗定时器(WDT):主要用于程序在产生错误是用作单片机系统复位重启的。另外也可作为一个基本定时器使用。
(2)定时器A:作基本定时器使用,结合捕获/比较功能模块可实现时序控制,可编程波形信号发生输出,可作串口波特率发生器使用。
(3)定时器B:作基本定时器使用,与定时器A基本相同,但是功能方面有某些功能会比A增强些。
1 看门狗
看门狗本质上是一个16比特的定时器。看门狗的主要功能就是检测到软件出现问题时重新启动系统。到看门狗设定的时间时,会产生一个系统的复位信号。没有设置为看门狗模式时也可以作为一般的定时器使用,可以选择时钟源(ACLK,MCLK),每个时钟源下有4个可选的时间间隔设置,通过软件来设置。
看门狗寄存器(WDTCTL)
口令字节:5AH,否则产生系统复位信号
CNTCL:1,清除WDTCNT寄存器内容;0,不影响WDTCNT寄存器内容
TMSEL:1,定时器模式;0,看门狗模式
SEL;1,ACLK做时钟信号;0,SMCLK做时钟信号
IS0,IS1:看门狗时间间隔选择
例程:P3.4外接LED,LED闪烁周期约为64ms。
#include
void main(void)
{
WDTCTL = WDT_MDLY_32; //设置看门狗工作在SMclk下定时 器,定时间隔约32ms
IE1 |= WDTIE; //开看门狗中断
P3DIR |= BIT4; //设置p3.4为输出
_BIS_SR(LPM0_bits + GIE); //进入LMP3并打开全局中断
}
// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
}
SMCLK工作在1Mhz下的定时间隔为32ms,复位后SMCLK默认时钟来源是DCO(上电复位后约为800HZ),所以定时间隔会比32ms长一些。
2 Timer_A(定时器A)
定时器A是一个16位的定时/计数器。它有3个捕获/比较寄存器。