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