正常创建一个带有串口的工程例如串口1

找到usart.c

/* USER CODE BEGIN 0 */
#include <stdio.h>
#include <errno.h>
/* 添加以下定义 */
#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
#endif

#ifndef STDERR_FILENO
#define STDERR_FILENO 2
#endif
int _write(int file, char *ptr, int len)
{
    if (file == STDOUT_FILENO || file == STDERR_FILENO) {
        HAL_UART_Transmit(&huart1, (uint8_t*)ptr, len, HAL_MAX_DELAY);
        return len;
    }

    errno = EBADF;
    return -1;
}


/* USER CODE END 0 */

就可以在工程中正常使用printf
参考文章:STM32通过UART实现printf重定向新手教程

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐