512826028 发表于 2012-5-12 17:35:09

请教一个关于定时器中断的问题

闲着没事,自己买了个简单的开发板,学着写430的程序。可是,在定时器这个地方遇到了问题。恳请高手给指点一下。
下面是我的代码:

#include "MSP430x14x.H"
char i=0x0f;      //用于显示
void main( void )
{
    // Stop watchdog timer to prevent time out reset
    WDTCTL = WDTPW + WDTHOLD;
   
    TACTL |= TASSEL0 + ID0 + ID1 + MC0 + TAIE;   
    //初始化定时器 使用ACLK 8分频UP模式使能中断
      
    P2DIR = 0XFF;//输出模式

    TAR = 5000;
    //CCTL0 = CCIE;      // CCR0 interrupt enabled
    //TACCR0 = 5000;
    __enable_interrupt();//
}

#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA_ISR()
{
    i = ~i;
    TACTL &= ~TAIFG;
    TAR += 5000;
    //TACCR0 += 5000;
    P2OUT = i;
}
程序不知道什么地方有问题。不会进入中断。如果把CCIE打开,则就会进入一次中断。如果给TACCR0赋初值,则就会使led等闪烁。
看过论坛的一部分帖子,说是TAIFG不会自动清零,需要软件清零,或者读一次TAIV也可以。就在程序中添加了TACTL &= ~TAIFG。但是,程序还是那个样子。
程序应该还是有问题的。不过,自己看不出来,还请高手给指点一下。我用的是F149。

何逸 发表于 2012-5-15 00:49:54

你的程序是给TAR赋值,TAR似乎是定时器计数器。那个系统会自动计数的你只要给CCRx赋值就可以了
页: [1]
查看完整版本: 请教一个关于定时器中断的问题