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

标签 interrupt-handling msp430

我从 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/

相关文章:

java - 如何让 Java 像 Ctrl+C 一样处理系统中断

c - MSP430 微 Controller - 如何检查寻址模式

clang - 如何使用LLVM/Clang+GCC为MSP430定义中断服务程序?

CC3200 SPI 从机接收不良

c - 调试msp430时在GDB中打印变量值

汇编语言 ASCII 字符串排序

c - __do_IRQ函数解释

c - STM32同一条EXTI线上的多个中断

assembly - Intel 30386 中的中断错误被推送到堆栈描述

scala - Scala 中如何中断异步计算?