STM32F407#使用多个串口时,printf函数,只能对应一个串口

多个串口输出打印字符串

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);

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值