多个串口输出打印字符串
1.同时使用多个多个时,printf输出打印只能通过一个串口,打印出来。
2.可通过写一个串口发送函数,用不同串口发送字符。
用串口打印:
1.先重定向,才能使用printf
// 函数功能: 重定向c库函数printf到DEBUG_USARTx
int fputc(int ch, FILE *f)
{
while((USART1->SR&0x40)==0);
USART1->DR = (uint8_t)ch;
return ch;
}
2. 用串口1打印
方式1:printf一个printf("Test Start");
printf("Test Start");
方式2:用一个发送字符串的函数,并同时转换大小写
/*main函数里*/
char Str[32]= {0};
sprintf(Str,"product_NG\r\n");
Send_String_Function(Str);//在发送字符串函数里面使用printf打印”product_NG“
void Send_String_Function(char *String) //发送数据
{
uint8_t i = 0;
for(i = 0; i < strlen(String);i++)
{
String[i] = toupper(String[i]);//转换大小写
}
printf("%s",String);//这里打印出来
// UART_Send_String(USART3,(uint8_t *)String);
}
串口1效果:达到输出两个字符串的效果
使用串口3:
step1:定义一个串口发送函数
void UART_Send_String(USART_TypeDef *USARTx,uint8_t *pdata)
{
while((*pdata)!=0)
{
while((USARTx->SR &0X40)==0);//等待发送结束
USARTx->DR =*pdata++;
}
}
step2:用串口3发送一次字符串”product_NG“
sprintf(Str,"product_NG\r\n");
UART_Send_String(USART3 ,(uint8_t *)Str);//用串口3打印字符串
串口3打印效果图
主程序代码:
printf("Test Start\r\n");
sprintf(Str,"product_NG\r\n");
Send_String_Function(Str);
UART_Send_String(USART3 ,(uint8_t *)Str);