如何在c中打印寄存器的内容
How to print contents of register in c
我正在尝试调试我正在为 UART 编写的驱动程序,该驱动程序从串行控制台读取字符串 chars
,直到用户按下 'l'。该函数在下面称为 'getstring()'。
我想检查状态寄存器的内容以查看设置了哪些位。状态寄存器偏移2。我需要在调用'getstring()'时打印它。我可以使用 printf()
.
这是 UART 的寄存器映射。
当我调用如何在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 = '[=10=]';
我正在尝试调试我正在为 UART 编写的驱动程序,该驱动程序从串行控制台读取字符串 chars
,直到用户按下 'l'。该函数在下面称为 'getstring()'。
我想检查状态寄存器的内容以查看设置了哪些位。状态寄存器偏移2。我需要在调用'getstring()'时打印它。我可以使用 printf()
.
这是 UART 的寄存器映射。
当我调用如何在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 = '[=10=]';