我需要一个Arduino UNO上的9位UART数据,所以我必须手动设置Arduino UART。
基本上,我不理解这行示例代码(从数据表中),它是为了在Arduino上启用UART TX和RX引脚,这是用简单易懂的机器语言完成的,只是意味着以RXE(Recieve enable)位和TXE(Transmission)位的方式将立即值加载到UCSR0B(USART控制和状态寄存器B)启用)位都很高。换句话说,将00011000加载到USCR0B中。
以下是数据表中的示例C代码:

USCR0B = (1 << RXE) | (1 << TXE);

最佳答案

RXETXE是位索引,因此(1<<RXE) | (1<<TXE)是一个掩码,其中TXERXE位都等于1(所有其他位都为0)。
例如,我不知道RXETXE的实际值,但假设TXE是位3,RXE是位4,则相关的头文件定义可能如下所示:

#define TXE 3  // TX Enable = bit 3
#define RXE 4  // RX Enable = bit 4

掩码计算的工作方式如下:
            1<<TXE  = 00001000 = 0x08
            1<<RXE  = 00010000 = 0x10
(1<<RXE) | (1<<TXE) = 00011000 - 0x18

10-01 20:03