This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5438A: 关于捕捉程序的写法

Part Number: MSP430F5438A

 Timer B使用了捕捉功能,设置成上升沿捕捉,下面是中断程序的两种写法:

///////////////////第一种/////////////////////

#pragma vector = TIMER0_B0_VECTOR
__interrupt void timer_b0_isr(void)
{
   if(  TB0CCTL0 & CCI  ){ //捕捉到低电平

      //进行处理
      TB0CCTL0 &= (~CCIFG) ; //清中断标志

  }

}

///////////////////第二种/////////////////////

#pragma vector = TIMER0_B0_VECTOR
__interrupt void timer_b0_isr(void)
{
      //进行处理
      TB0CCTL0 &= (~CCIFG) ; //清中断标志

}

请问: 

如果设置成只有上升沿捕捉,在中断程序里面,就可以不用再判断了,直接进行处理就可以了?也就是说,可以不使用  if(  TB0CCTL0 & CCI  ),这个语句了?谢谢

  • 您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

  • 您好,如果您只在其中一个边沿上触发,那么无需检查 CCI。 可以说您不应该检查 CCI ,因为您关注的不是引脚的状态。

    > TB0CCTL0 &= (~CCIFG) ; // 清除中断标志

    请不要删除该行,CCIFG (仅适用于 CCR0) 在进入 ISR 时自动清零 (参考用户指南第 18.2.6.1 节) ,因此如果此时打开的话,则会指向您不想丢失的另一个事件。 (可能在该问题中不太重要,但之后可能会有用)