msp430 定时中断问题

lyzj3210   2008-10-15 10:01 楼主
我的程序大概如下
void main()
{
   .... //初始化
    .....
}
在我的主函数里我调用一个函数,这个函数产生变量m=1

现在我想进入中断定时

#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
    TIMER_Count++;
   
     //_BIS_SR(GIE);                           //开中断
     
     
     //50ms定时
    if(m=1)
    {
          if(TIMER_Count >50 )
          {
              TIMER_Count =0;
          }
           
   }
}  不知道中断能不能这样写的,要是可以的话,为何我的中断进不去

回复评论 (8)

定时中断是否工作只和中断配置或者说初始化有关系, 和什么m=1以及main函数没有直接关系。
点赞  2008-10-15 10:44
void TIMER_Init()           //定时器初始化
{
    TACTL = (TASSEL_2 + TACLR);                 //SMCLK,clear TAR,SMCLK = MCLK
    TACCTL0 = CCIE;                             //CCR0中断允许
    TACCR0 = (INT16U)((FP32)TIMER_TIME * CPU_Frequency / 1000);  //定时时间  
    //TBCTL &= ~(MC0 + MC1);                    //定时器关闭
    TACTL |= MC0;                               //增计数模式
   
               
}

void main()
{
  .... //定时器初始化
   
}
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
    TIMER_Count++;
   
    _BIS_SR(GIE);                          //开中断
   
   
    //50ms定时
   
   
          if(TIMER_Count >50 )
          {
              TIMER_Count =0;
              //进行一些数据处理
          }
         
  }   我定时器定时1ms,所以应该在计数到50次时应该进行数据处理的,可是我的中断进不去的
点赞  2008-10-15 10:52
_BIS_SR(GIE);                          //开中断

这是什么意思? 使能全局中断?
点赞  2008-10-15 10:56
是。打开全局中断控制
点赞  2008-10-15 11:05
在使能全局中断之前,定时中断也是不能工作的。应该在初始化定时中断之后就使能全局中断。 供你参考。
点赞  2008-10-15 11:08
void main()
{
  .... //定时器初始化
  _EINT();                          //打开全局中断控制
}

我在主程序中加了上面中断控制,也进不去呀
点赞  2008-10-15 11:15
还有就是中断号和配置是否匹配,初始化是不是正确,也就这些东西了。 Good luck!
点赞  2008-10-15 11:38
中断没有问题,我把主频搞错了,应该用DCO的,我用了XT2,忘了改了。谢谢
点赞  2008-10-15 14:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复