以USCI0为例,说明该两种不同方法。
1.switch-case方法
- #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.查询标志为方法
- #pragma vector=USCI_A0_VECTOR
- __interrupt void USCI_A0_ISR(void)
- {
- // 接收中断
- if( ( UCA0IFG & UCRXIFG ) != 0 )
- {
-
- }
- // 发送中断
- if( ( UCA0IFG & UCTXIFG ) != 0 )
- {
-
- }
- }
总结
TI的官方例程都是用switch-case方法,而本人则更喜欢第二种——查询标志位。总之两种方法的最终效果都一样。