我正在编写代码来编程UART芯片。发送和接收寄存器的地址偏移量均为0x00。怎么可以访问两个寄存器?
答案 0 :(得分:1)
这两个寄存器不能从代码中读写。 UART发送寄存器是只写的。 UART接收寄存器是只读的。 @Weather Vane。
硬件使用读/写控制作为位,如地址位,以区分寄存器访问。
这意味着代码无法直接读取所写的内容。代码也不能直接写入接收寄存器。
在极少数情况下,如果代码需要读取UART发送寄存器的内容,则可以使用影子存储器中的副本。
int main()
{
WORD w_cabalbase = *reinterpret_cast<PWORD>(ADDR_cabalbase);
DWORD dw_cabalbase_ofs = *reinterpret_cast<PDWORD>(w_cabalbase + ZeroOFS);
DWORD dw_onat = *reinterpret_cast<PDWORD>(dw_cabalbase_ofs + ADDR_ONat);
if (dw_onat == 3) {
// ...
}
}