我从 TI 的 MSP430FR57xx 的 UART 示例代码中找到了这一部分。
我不明白 __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;
}
}
最佳答案
中断向量寄存器的值永远不会是奇数或大于 8。因此,如果您将此告知编译器,则可以通过省略对这些值的检查并使用简单的跳转表来实现这些情况,从而生成稍微更高效的代码。
关于interrupt-handling - __even_in_range(UCA0IV,0x08) 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36930878/