我从TI的UART for MSP430FR57xx的示例代码中找到了这个部分。
我不明白__even_in_range(UCA0IV,0x08)
的含义是什么意思?
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
switch(__even_in_range(UCA0IV,0x08))
{
case 0:break; // Vector 0 - no interrupt
case 2: // Vector 2 - RXIFG
while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
break;
case 4:break; // Vector 4 - TXIFG
default: break;
}
}
答案 0 :(得分:5)
中断向量寄存器的值不会为奇数或大于8。因此,如果您告诉编译器,可以通过省略对这些值的检查,并通过简单的跳转表实现这些情况来生成稍高效的代码。