gpt4 book ai didi

c - 模拟 getchar() 的 UART 驱动程序

转载 作者:行者123 更新时间:2023-11-30 16:49:07 26 4
gpt4 key购买 nike

我有一个 UART 驱动程序,它读取串行控制台的一串数据,直到用户输入“l”。但是,我只想读取一个字符。它用于用户输入 1-9 或 a-z 的菜单。我正在尝试创建与标准 C getchar() 等效的函数。我通常如何做到这一点?

这是 UART 的寄存器映射。

enter image description here

void getstring(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');
}

最佳答案

循环在循环中一次检索一个字符。如果您只想要一个字符,那么只需省略外部循环即可。

char getch() 
{
volatile uint32_t *uart = (volatile uint32_t*) UART;
while ((uart[2] & (1<<7)) == 0);
return uart[0];
}

然后使用此函数重写 getstring() 就有意义了(更易于维护)。

关于c - 模拟 getchar() 的 UART 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com