下面的函数打印出UART寄存器的内容。这是注册地图。了解uart寄存器索引
有人能解释为什么,在+=4
for循环上升?
谢谢
#define UART0_BASE 0x21000
void print_uart(unsigned int base) {
int i;
int val;
unsigned int adr;
for (i=0; i< 0x18; i+=4) {
adr = base + i;
printf("Uart %s [0x%x] -> 0x%x\n",uart_reg[i>>2],adr,val);
}
}
看起来破损。它的处理器是什么? – unwind
“线”两侧的外部外围设备地址不需要相同。 你可以将你的UART的'A0..An'连接到你的CPU /存储器控制器的'A2..An + 2'上,'A0,A1'固定在地。 这会导致CPU侧4个地址的距离,而它们在UART侧仍然相邻。 由于你的UART有16位寄存器,每个地址已经代表2个字节。 – Gerhardh