串口发送数据要丢掉一个字符,32F3

2019-07-20 22:55发布

        if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        printf(" 您发送的消息为: ");
                //        delay_ms(5000);//就是,有了一个延时之后就会丢掉第一个字符
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                        printf(" ");//插入换行
                        USART_RX_STA=0;

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
钟楼脚下
1楼-- · 2019-07-21 00:47
 精彩回答 2  元偷偷看……
jermy_z
2楼-- · 2019-07-21 05:48
在中断里做延时,真是作死,还延时5s
快乐龙猫钧哥
3楼-- · 2019-07-21 09:54
我就是想弄清楚,我用串口调试的时候,我发送给他的数据,32是怎么接受到数据的,然后是怎么又通过串口发给我的
Ω囿圉Ω
4楼-- · 2019-07-21 10:33
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束

改成:while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

一个好像是开始发送,一个是发送完成。
开始发送是硬件开始发送,可以在发送寄存器放入新的数据。
发送完成是硬件发送完了,如果有新数据放入发送寄存器会直接开始发送。

钟楼脚下
5楼-- · 2019-07-21 11:30
请问这个USART_SendData需要include哪个头文件?
快乐龙猫钧哥
6楼-- · 2019-07-21 17:25
钟楼脚下 发表于 2016-4-10 11:45
请问这个USART_SendData需要include哪个头文件?

#include "usart.h"

一周热门 更多>