MSP430--Timer A

1.TIMER A的寄存器


TIMER A的控制寄存器:TACTL

操作注意:一般要停止定时器,才进行修改TACTL的操作。


SSEL1,SSEL0:选择时钟源。

ID1,ID0:选择分频比。

MC1,MC0:选择计数模式。00:停止模式。01:增计数模式。10:连续计数模式。11:增减计数模式。

CLR:定时器清除位。

TAIE:定时器中断允许位。0:禁止定时器溢出中断。

TAIFG:定时器溢出标志位。计数到0时置位。


TAR 计数器:这个单元是执行计数的单元,是计数器的主题。内容可读可写。

CCTLx 捕获比较控制寄存器。在POR信号后全部复位。


CAPTMOD1-0选择捕获模式。00:禁止捕获。01:上升沿捕获。10:下降沿捕获。11:上升下降均捕获。

CCIS1-0:定义捕获时间的输入源。00:CCIxA,01:CCIxB, 10:GNE,11:VCC。

SCS:选择补货信号与定时时钟的同步异步关系。0:异步捕获。1:同步捕获。

SCCIx:比较相等信号EQUx将选中的捕获比较输入信号CCIx进行锁存,然后可以从SCCIx读出。

CAP:选择比较模式。0:比较模式。1:捕获模式。

OUTMODx选择输出模式。

CCIEx:捕获比较模块中断允许位。

CCIx:捕获比较模块的输入信号。由CCIS1-0选择的输入信号可以通过该位读出。

OUT:输出信号。

COV:捕获溢出标志。

CCIFGx:捕获比较中断标志。


CCRx 捕获比较寄存器。在捕获方式时,当满足捕获条件,硬件将自动把TAR计数器中的数据写入该寄存器。在比较模式时,定时器TAR的值等于寄存器CCRx时就发生中断,即把CCIFGx置位。


TAIV:中断向量寄存器。TIMER A模块有两个中断向量,一个单独分配给捕获比较寄存器CCR0,另一个座位公用中断向量用于定时器与其他的捕获比较寄存器。之所以使CCR0中断具有最高的优先级,是因为CCR0可以用于定义增计数和增减计数模式的周期,因此他需要最快速的服务。CCIFG0在中断服务之后可以自动复位。

其他捕获比较单元和定时器公用一个中断向量,因此是多源中断,对应的中断标志CCIFG1-CCIFG2,TAIFG1在读中断向量字TAIV后,自动复位。如果不访问TAIV寄存器则不能自动复位要软件清除。


TAIV定义了不同的值分别对应不同的中断源。



void main(void)
{
 WDTCTL = WDTPW + WDTHOLD;
 FLL_CTL0 |= XCAP14PF;
 TACTL = TASSEL1 + TACLR +TAIE;//SMCLK,清除TAR,允许定时器溢出中断。
 P5DIR |= 0X02;
 TACTL |= MC1;//TIMER A连续计数模式
 _EINT();
 for(;;)
 {
  _BIS_SR(CPUOFF);
  _NOP();
 }
}
#pragma vector=TIMERA1_VECTOR
_interrupt void Timer_A(void)
{
  switch(TAIV)
  {
    case 2: break;
    case 4: break;
    case 10: P5OUT ^=0X02;//定时溢出发生时取反P5.1.产生PWM方波。
             break;
  }
}


2.定时器的工作模式

停止模式:只是用来让定时器暂停,并不是发生复位。恢复后会回到之前的工作模式和对应的值。

增计数模式:捕获比较寄存器CCR0用作TIMER A增计数模式的周期寄存器。当TAR增计数到CCR0的值时,定时器复位并从0开始重新计数。CCR0为16位寄存器,所以该模式适用于定时周期小于0FFFFH的连续计数情况。当定时器的值到达CCRO,即设置CCIFG0表示捕获比较中断发生。而当定时器从CCR0计数回到0时,设置定时溢出标志位TAIFG为1.











“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值