打印
[STM32F1]

STM32 串口2发送完数据后,怎么实现每发完一次数据都在后面加一个回车?

[复制链接]
13741|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hcs668|  楼主 | 2014-8-13 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是用串口1发数据到串口2,然后由串口2将数据发送出去,但串口2发完数据后要怎么加一个回车啊?串口1发的数据是有换行,但串口2发出去的并没有换行,所有数据都是连在一起.结果如下,回车符应该是0x0D,0x0A呀,不知道应该怎么加的,求助。我想要串口2每发完一次都换一行,应该怎么做........
串口1:
0123456789
0123456789
0123456789
0123456789
0123456789

串口2:
0123456789012345678901234567890123456789012345678901234567890123456789

这个问题要怎么解的?求指点,请求各位大神帮助啊,感谢!!!

代码

while(1)
{         
     delay_ms(1);
        
       if(USART_RX_STA&0x8000)     //接收到一次数据了
{          
rxlen=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
         
for(i=0;i<rxlen;i++)
{
               
USART_SendData(USART2 , USART_RX_BUF[i]);//向串口2发送数据
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
                                 
}
           
            printf("%s\r\n",USART_RX_BUF);
         
            USART_RX_STA=0;
           
            
}else
{
times++;
if(times%100==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
delay_ms(10);   
}
沙发
Leeone| | 2014-8-13 09:07 | 只看该作者
在每串数据后面加0x0D 0x0A就行了

使用特权

评论回复
板凳
hcs668|  楼主 | 2014-8-13 09:22 | 只看该作者
Leeone 发表于 2014-8-13 09:07
在每串数据后面加0x0D 0x0A就行了

我加了不行,不知道应该怎么加的,我是新手,可以给个例子吗?谢谢!

使用特权

评论回复
地板
Leeone| | 2014-8-13 10:44 | 只看该作者
hcs668 发表于 2014-8-13 09:22
我加了不行,不知道应该怎么加的,我是新手,可以给个例子吗?谢谢!

比如你串口2发送一帧数据 0x03 0x33 0x33.....0x0D 0x0A在串口上打印出来就换行了

使用特权

评论回复
5
mmuuss586| | 2014-8-13 12:10 | 只看该作者
按照楼上的意思,发完数据后,再发0X0D,0A;
你也可以查下:回车要发啥;

串口调试助手:选择ASC码接收;

使用特权

评论回复
6
helongdm| | 2014-8-13 15:32 | 只看该作者
在你的printf之前增加USART2的\r\n的输出

使用特权

评论回复
7
北极星405| | 2015-5-27 15:04 | 只看该作者
没明白,到底怎么弄才能显示回车呢?

使用特权

评论回复
8
神的兄弟| | 2015-5-27 15:57 | 只看该作者
printf()函数自带串口1的回车换行,并且只支持串口1
串口2不要用printf

使用特权

评论回复
9
desomond| | 2015-5-27 18:59 | 只看该作者
二楼正解, C语言中是'\r'是回车,'\n‘是换行符,'\r\n'是回车换行符,在要发送的字符后面加上就行了,如果你的终端上还是没有显示,也有可能是你的终端有问题或者显示方式不对

使用特权

评论回复
10
郝帅| | 2020-4-16 16:29 | 只看该作者
USART_SendData(USARTx,0x0d);
                        while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
                        USART_SendData(USARTx,0x0a);
                        while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);


直接这样加在发送数据的最后就可以

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

0

粉丝