自定义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中打印信息
不同的串口同时打印信息结果如下