STM32CubeIDE printf 多个串口

自定义USART_printf如下

#include <stdarg.h>//加上头文件

#define CMD_BUFFER_LEN 255

void USART_printf (UART_HandleTypeDef *huart,char *fmt, ...)
{
    char buffer[CMD_BUFFER_LEN+1];
    uint8_t i = 0;

    va_list arg_ptr;
    va_start(arg_ptr, fmt);
    vsnprintf(buffer, CMD_BUFFER_LEN+1, fmt, arg_ptr);
    while ((i < CMD_BUFFER_LEN) && buffer[i])
    {
        HAL_UART_Transmit(huart,&buffer[i++],1,0xFFFFFFFFU);//这里的huart就是指针类型的不要再取地址,而buffer是数组类型需要取地址
    }
    va_end(arg_ptr);
}

使用方法如下:

  USART_printf(&huart1,"%s is %d years old
","Li Ming",15);//在串口1中打印信息
  USART_printf(&huart2,"%s is %d years old
","Wang Fei",16);//在串口2中打印信息

不同的串口同时打印信息结果如下

原文地址:https://www.cnblogs.com/lizhiqiang0204/p/12336030.html