如何在c中打印寄存器的内容

我正在尝试调试我正在为UART编写的驱动程序,该驱动程序从串行控制台读取一串chars ,直到用户按下’l’。 该函数在下面称为’getstring()’。

我想检查状态寄存器的内容,以查看设置了哪些位。 状态寄存器偏移2.我需要在调用’getstring()’时打印它。 我可以使用printf()

这是UART的寄存器映射。

Register_map

当我打电话给我怎么能打印出c中寄存器的内容?

 #define UART 0x00080000 void getchar(char *str) { volatile uint32_t *uart = (volatile uint32_t*) UART; char c = 0; do { while ((uart[2] & (1<<7)) == 0); c = uart[0]; *str++ = c; } while (c!='l'); 

}

`

要将二进制转换为1和0的ASCII字符串,只需执行以下操作:

 uint32_t local = *uart; for(size_t i=0; i<32; i++) { *str = (local & (1u << 31-i) ? '1' : '0'; str++; } *str = '\0';