两个不同的寄存器具有相同的地址

时间:2016-07-13 07:23:40

标签: c

我正在编写代码来编程UART芯片。发送和接收寄存器的地址偏移量均为0x00。怎么可以访问两个寄存器?

1 个答案:

答案 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) {
        // ...
    }
}