TI中文支持网
TI专业的中文技术问题搜集分享网站

A 定时器不能中断问题

各位:我用的是MSP430F2132的芯片,我的设置如下:

 BCSCTL2=0;  BCSCTL1|=XT2OFF;
  TACTL=TASSEL_2+MC_2+TAIE;
  _EINT();

但是,就是不产生中断,连TAR记数都是0,我用软件TAR++ 使它溢出,也不产生中断,连TAIFG标记也没有,BCSCTL1|=XT2OFF;
这一句用不用都一样。更怪的是我置1 TAIFG也不中断,我错在哪里?谢谢指点!

 

秋之初:

您好,能不能看看你中断服务程序部分的代码?

其中,TAxIV寄存器需要程序主动清除相应中断标志位。

另外,可以参考附件中的例子,仿照例子中中断服务程序的写法:

msp430x21x2_ta1_03.c

msp430x21x2_ta1_04.c

msp430x21x2_ta1_07.c

msp430x21x2_ta1_08.c

msp430x21x2_ta1_09.c

Peter_Zheng:

void main(void)

{

 WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

 P1DIR |= 0x01;                            // P1.0 output

 TA0CCTL0 = CCIE;                           // TA0CCR0 interrupt enabled

 TA0CCR0 = 50000;

 TA0CTL = TASSEL_2 + MC_2;                  // SMCLK, contmode

 __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0 w/ interrupt

}

// Timer A0 interrupt service routine

#pragma vector=TIMER0_A0_VECTOR

__interrupt void Timer_A0 (void)

{

 P1OUT ^= 0x01;                            // Toggle P1.0

 TA0CCR0 += 50000;                          // Add Offset to TA0CCR0

}

给你个例程参考一下,你的问题是CCRx没有设置,TAIFG是中断标志位

Young Hu:

回复 Peter_Zheng:

zhi chen,

您好,

在另一个帖子里已经回复了您。

希望您以后在发帖子的时候,能够将采用的编程环境,软件设置等等描述清楚,这样可以更快更好的定位问题解决问题。谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » A 定时器不能中断问题
分享到: 更多 (0)