在做比赛项目时通过USART1输出数组里的元素,但显示出来的数组一直为乱序。最后发现问题所在,因为代码的执行速度很快,后发的新数据会将之前串口发送寄存器里的旧数据覆盖,导致打印出来的数据不全或为乱序。
**解决方案:**在发送数据语句后面加上
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); //等待发送数据寄存器为空
这样就会等发送数据寄存器里的数据全部发送完毕之后,再发送新的数据,这样就不会出现乱序或缺失数据的情况。