stm32有几个串口可以使用,当我们想用printf打印数据到上位机时,通常是使用fput重定向
当我们要多个串口使用printf格式函数时,可以在写一个类似printf的函数:
#include <stdarg.h>
#define USART3_SEND_LEN 300
void USART3_printf (char *fmt, ...)
{
char buffer[USART3_SEND_LEN+1]; // CMD_BUFFER_LEN³¤¶È×Ô¼º¶¨Òå°É
int i = 0;
va_list arg_ptr;
va_start(arg_ptr, fmt);
vsnprintf(buffer, USART3_SEND_LEN+1, fmt, arg_ptr);
while ((i < USART3_SEND_LEN) && buffer[i])
{
USART_SendData(USART3, (u8) buffer[i++]);
while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
}
va_end(arg_ptr);
}
将串口改成要用的串口就可以了