【问题标题】:When redirecting printf to UART, output lines have a stair-stepped appearance将 printf 重定向到 UART 时,输出行呈阶梯状
【发布时间】:2021-12-20 15:45:32
【问题描述】:

我刚开始使用 STM32 微控制器,我正在将 printf 的输出重定向到 UART。出于某种奇怪的原因,显示的终端不断添加代码中不存在的额外空格。我似乎找不到原因。

这是显示输出的截图;请注意阶梯状的外观,因为每个 printf 语句都被换成了一个比前一个缩进更深的新行:

这是我用来重定向printf的代码:

int _write(int file, char *ptr, int len)
{
    HAL_USART_Transmit(&husart3, (uint8_t*)ptr, len, HAL_MAX_DELAY);
    return len;
}

我调用这段代码如下:

printf("program starting...\n");
int counter = 0;
while(1)
{
    printf("counter = %d\n", counter);
    counter++;
    HAL_Delay(1000);
}

什么可能导致这种奇怪的包装行为,我该如何解决?

【问题讨论】:

标签: c embedded printf stm32 uart


【解决方案1】:

您的终端 - 像大多数终端一样 - 像旧打字机一样解释 \n\r

  • \n 将滚轮移动一行
  • \r 将托架移动到纸张的左侧

输出显示只有滚轮被移动了,但小车没有回到最左边的位置。

两种选择:

  • 输出\r\n 而不仅仅是\n
  • 配置您的终端,使\n 足以移动到下一行返回最左边的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2019-05-27
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多