以USCI0为例,说明该两种不同方法。
1.switch-case方法
Cpp代码
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
switch(__even_in_range(UCA0IV,4))
{
case 0:
break;
case 2: // 接收中断
// do something here
break;
case 4: // 发送中断
// do something here
break;
default:
break;
}
}
2.查询标志为方法
Cpp代码
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
// 接收中断
if( ( UCA0IFG & UCRXIFG ) != 0 )
{
}
// 发送中断
if( ( UCA0IFG & UCTXIFG ) != 0 )
{
}
}
总结
TI的官方例程都是用switch-case方法,而本人则更喜欢第二种——查询标志位。总之两种方法的最终效果都一样。 |