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.
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 节) ,因此如果此时打开的话,则会指向您不想丢失的另一个事件。 (可能在该问题中不太重要,但之后可能会有用)