请教一个关于定时器中断的问题
闲着没事,自己买了个简单的开发板,学着写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。 你的程序是给TAR赋值,TAR似乎是定时器计数器。那个系统会自动计数的你只要给CCRx赋值就可以了
页:
[1]