[资料分享] MSP430F5438中断函数两种编写方法

fish001   2017-7-21 22:16 楼主
以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方法,而本人则更喜欢第二种——查询标志位。总之两种方法的最终效果都一样。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复