MSP430定时器无法进入中断

2019-03-24 10:08发布

这是例程稍微改了一下,无法进入中断,我不是很明白TAR也会用在CCR1进行计数么还是只能用在CCR0计数中?那TIMERA1什么时候可以进入中断呢,datasheet中说的定时器溢出(TAIFG)情况下可以,这是跟TIMER0一样当TAR计数到CCR0就触发么?
int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x01;                            // P1.0 output
  CCTL1 = CCIE;                             // CCR1 interrupt enabled
  CCR1 = 50000;
  TACTL = TASSEL_2 + MC_2;                  // SMCLK, Contmode
  _EINT(); //开中断
   while(1)
{   
}
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
  switch( TAIV )
  {
  case  2:                                  // CCR1
    {
    P1OUT ^= 0x01;                          // Toggle P1.0
    CCR1 += 50000;                          // Add Offset to CCR1
    }
           break;
  case  4: break;                           // CCR2 not used
  case 10: break;                           // overflow not used
}
}



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
tanzhiying
1楼-- · 2019-03-25 05:26
 精彩回答 2  元偷偷看……
huaiqiao
2楼-- · 2019-03-25 08:41
你的这个程序具体是什么错误呢?编译后结果报错不?
tanzhiying
3楼-- · 2019-03-25 10:37
huaiqiao 发表于 2015-6-12 15:44
你的这个程序具体是什么错误呢?编译后结果报错不?

不报错,就是一直在while(1)里循环,进不了定时器中断。
huaiqiao
4楼-- · 2019-03-25 15:19
 精彩回答 2  元偷偷看……
tanzhiying
5楼-- · 2019-03-25 17:59
huaiqiao 发表于 2015-6-12 15:53
实在不行就屏蔽掉while(1)的死循环,然后你看下这个sr寄存器和GIE寄存器这些,你有设置吗?你430的什么型号啊

犯了一个超级愚蠢的小错误,这个程序是对的,谢谢大家。
huaiqiao
6楼-- · 2019-03-25 22:00
tanzhiying 发表于 2015-6-12 16:21
犯了一个超级愚蠢的小错误,这个程序是对的,谢谢大家。

是不是while循环中多了个}?

一周热门 更多>

相关问题

    相关文章