打印

STM32串口接收问题

[复制链接]
2987|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
questiont|  楼主 | 2008-9-9 21:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位好:
     想请教个问题,我想问下STM32串口通信过程中,接收数据时如何能够判断已经接收完数据,我看例子上是这样写的

 do
  { 
    if((USART_GetFlagStatus(USART2, USART_FLAG_RXNE) != RESET)
    {
       RxBuffer[RxCounter++] = USART_ReceiveData(USART2);
      
    }   
 
  }while(RxBuffer[RxCounter - 1] != '\r');    //就是判断最后一位是否是\r


  第一,我用该方法,不能跳出该循环,因为我看了接收寄存器里最后一位是我发送的最后一个字节的数,不是\r;
  第二,我想问一下有没有别的方法可以判断数据是否接收完(我试过判断USART_FLAG_RXNE是否非空作为While的条件,但是程序在执行完第一次接收后就跳出了While循环)
沙发
starm| | 2008-9-9 21:45 | 只看该作者

发送方应该告诉接收方每次发送的字节数

比如格式 :长度 + 数据
接收方等待 指定长度的数据接收到,或者超时。

使用特权

评论回复
板凳
hex99| | 2008-9-9 22:29 | 只看该作者

发送用1A结尾

while(!(0x1a)) {
    recieving();
}

使用特权

评论回复
地板
古道122| | 2008-9-10 08:08 | 只看该作者

也来问一个

请教2楼的,你所说的接收方等待是指接收的数据长度比指定的长度小的时候可以用等待吧,那如果接受的数据长度比指定的长度长的时候(即长度的值错误的时候),这个时候应该怎么判断?

使用特权

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

本版积分规则

2

主题

1

帖子

0

粉丝