我正在编写代码来对 UART 芯片进行编程。发送和接收寄存器的地址偏移量均为 0x00。那么如何访问两个寄存器呢?
最佳答案
这两个寄存器不是每个都可以从代码中读取和写入的。 UART 发送寄存器是只写的。 UART 接收寄存器是只读的。 @Weather Vane .
硬件使用读/写控制作为位,如地址位,区分寄存器访问。
这意味着代码无法直接读取写入的内容。代码也不能直接写入接收寄存器。
在极少数情况下,如果代码需要读取 UART 发送寄存器的内容,则可以使用影子存储器中的副本。
static unsigned char UART_write_shadow;
void UART_transmit_write(unsigned char x) {
*UART_transmit_register_address = x;
UART_write_shadow = x;
}
unsigned char UART_transmit_read(void) {
return UART_write_shadow;
}
关于c - 具有相同地址的两个不同寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38345144/