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;
}
将等待发送结束放到向串口发送数据即可,具体原因不清楚。