gpt4 book ai didi

c - Newlib printf 延迟

转载 作者:行者123 更新时间:2023-12-01 02:39:29 26 4
gpt4 key购买 nike

我在使用 newlib 的 printf 函数时遇到一个奇怪的问题,它被重定向到 uart 端口。

这个问题可以用一个例子很好地说明。

printf(" hi ");
...
...//some other simple code. like a++;
...
printf(" hello ");

现在,当我运行该程序时,直到到达/调用下一个 printf 时才会出现“hi”。即,当应该打印“hello”时,它会打印“hi”,.. 始终携带 1 次调用的延迟。最后一个 printf 根本没有打印出来。

我的 UART 代码在哪里:

int write(int file, char *ptr, int len) {
unsigned int i;
int de =1;
//initialize_Uart(de);// NOT REQUIRED as UBOOT has already done the job.

/* Transmitting a char from UART */
for (i = 0; i < len; ++i, ++ptr)
{
while (!(IN_8(DUART1_ULSR1)&(0x20))); // wait for the CTS bit is cleared
OUT_8(DUART1_UTHR, *ptr);

}
return len;
}

解决这个问题的方法是什么?

最佳答案

您必须记住,输出到流(如 stdout)默认情况下是缓冲的

在刷新缓冲区之前不会写入任何内容,可以通过显式调用 fflush(stdout) 或通过在打印的文本中添加换行符(例如 printf("hi\n");),或隐式地编写足够的内容以使缓冲区填满并由库刷新。

关于c - Newlib printf 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660254/

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