STM32串口接收问题

[复制链接]
3621|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

粉丝
快速回复 在线客服 返回列表 返回顶部