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

[复制链接]
6358|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

粉丝
快速回复 在线客服 返回列表 返回顶部