下面的函數打印出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