我需要一个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);
最佳答案
RXE
和TXE
是位索引,因此(1<<RXE) | (1<<TXE)
是一个掩码,其中TXE
和RXE
位都等于1(所有其他位都为0)。
例如,我不知道RXE
和TXE
的实际值,但假设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