是什么意思__even_in_range(UCA0IV,0x08)

时间:2016-04-29 06:18:03

标签: interrupt-handling msp430

我从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;
    }
}

1 个答案:

答案 0 :(得分:5)

中断向量寄存器的值不会为奇数或大于8。因此,如果您告诉编译器,可以通过省略对这些值的检查,并通过简单的跳转表实现这些情况来生成稍高效的代码。