多串口使用

STM32三个串口的调试

串口一与其他串口的区别

串口一使用高速时钟,挂在APB2上面;
波特率设置为115200;
其他串口使用低速时钟,挂在APB1上面;
波特率设置为9600

注意事项

TX引脚设置为复用推挽输出,速度为50M
RX引脚设置为浮空输入

出现的错误及解决办法

错误:
本次调试的是串口一二三,调试的过程中发现串口一的在接收时会丢失第一位数据,而另外两个正常 。
解决办法:

        if(USART1_RX_STA&0x8000)
	{					   
		len=USART1_RX_STA&0x3fff;//得到此次接收到的数据长度
		printf("\r\n串口1发送数据为:\r\n\r\n");
		for(t=0;t<len;t++)
		{
		     while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
		     USART_SendData(USART1, USART1_RX_BUF[t]);//向串口1发送数据
		}
		printf("\r\n\r\n");//插入换行
		USART1_RX_STA=0;
	}

将等待发送结束放到向串口发送数据即可,具体原因不清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值