打印

请教MSP430 多源中断 中断标志软件复位的问题

[复制链接]
5464|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdmgb520|  楼主 | 2010-8-6 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看到资料上说430的多源中断(多个中断源共用一个中断向量),中断标志为不会自动复位,必须要软件复位,否则会再次中断,进入中断嵌套。
但是我之前用了定时器B的主计数器计数中断,并没有在中断里清零中断标志,一直也可以。这是什么原因呢?
请大家看下下面的代码:(注释20100806的是今天新加上去的)
/*===================================================================*/
//名称:TimerB初始化
//功能:定时器B0.1s产生一次中断,用于控制LED灯的闪烁频率
//参数:
//返回值:
//说明:
/*===================================================================*/
void init_TimerB(void)
{
    //TBCLGRP   CNTLx  TBSSELx  IDx  MCx  TBCLR  TBIE
    TBCTL =   TBCLGRP_0 + 0 + TBSSEL_1 + ID_0 + MC_1 + 0 + 0;
    TBCCR0 = 3276; //输0.1s产生一次中断
    TBCTL |= TBIE;  //开定时中断,用于改变TB2的周期和占空比。
}
/*===================================================================*/
//名称:TimerB中断1
//功能:用于控制LED灯的闪烁频率
//参数:
//返回值:
//说明:
/*===================================================================*/
#pragma vector=TIMERB1_VECTOR
__interrupt void Timer_B (void)
{
    static unsigned int time_counter=0;
    switch(TBIV)
    {
    case 14:    //时钟溢出中断
      {
          LED2 ^= LED2_B;
          TBCTL &= ~TBIFG;  //20100806
          //由于是多源中断,中断标志位需要软件清零
      }break;
    }
}

相关帖子

沙发
ayb_ice| | 2010-8-6 14:05 | 只看该作者
是某些,不是所有的

使用特权

评论回复
板凳
zjuwsj| | 2010-8-6 22:31 | 只看该作者
建议每次进入中断后都手动清除标志位

使用特权

评论回复
地板
gdmgb520|  楼主 | 2010-8-6 22:36 | 只看该作者
我在现在的程序中加入了清理中断标志,
运行依然正常。
谢谢楼上两位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:了解新东西才知道自己的不足。 www.elecbench.com

67

主题

452

帖子

1

粉丝