STM32多串口重定义
在平时使用stm32单片机做开发时,有时会开启串口进行调试,如重定义串口,使用printf
打印一些调试信息,但是这样只能重定义一个串口,也就是只有一个串口能够使用printf
,那么在开发的时候需要使用多个串口的时候该怎么进行重定义呢?这里提供了一种方案。
#include "stdarg.h"
#include "stdio.h"
/*
*********串口打印函数******************
*函数名称:UsartPrintf
*参数: *USARTx:选择打印的端口
* fmt:需要打印的数据
*
*说明:
****************************
*/
void USART_Printf(USART_TypeDef *USARTx, char *fmt,...)
{
unsigned char UsartPrintfBuf[296];
va_list ap;
unsigned char *pStr = UsartPrintfBuf; //指针pStr指向数组
va_start(ap, fmt);
vsprintf((char *)UsartPrintfBuf, fmt, ap);
va_end(ap);
while(*pStr != 0)
{
USART_SendData(USARTx, *pStr++);
while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);
}
}