微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32 485通讯程序出错了。电脑一串数据然后返回是没错的。但是一个个字节解析的时候出错了

stm32 485通讯程序出错了。电脑一串数据然后返回是没错的。但是一个个字节解析的时候出错了

时间:10-02 整理:3721RD 点击:

  1. //接收缓存区        
  2. u8 RS485_RX_BUF[1024];          //接收缓冲,最大1024个字节.
  3. //接收到的数据长度
  4. u16 RS485_RX_CNT=0;                     
  5. u16 Rs485_RX_Read_Cnt = 0;                // 485数据的当前读取位置
  6.   
  7. <blockquote>void USART2_IRQHandler(void)

复制代码

  1. <blockquote>void UartCheck(void)

复制代码


//RS485查询接收到的数据
//buf:接收缓存首地址
//len:读到的数据长度
void RS485_Receive_Data(u8 *buf,u8 *len)
{
        u8 rxlen=RS485_RX_CNT;
        u8 i=0;
        *len=0;                                //默认为0
        delay_ms(10);                //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束
        if(rxlen==RS485_RX_CNT&&rxlen)//接收到了数据,且接收完成了
        {
                for(i=0;i<rxlen;i++)
                {
                        buf=RS485_RX_BUF;       
                }               
                *len=RS485_RX_CNT;        //记录本次数据长度
                RS485_RX_CNT=0;                //清零
        }
                delay_ms(5);       
}
初始化的就不贴上来。现在是这种情况用这个void RS485_Receive_Data(u8 *buf,u8 *len)接收数据再发回电脑是验证到数据没问题的,但是如果用解析的函数,就无法实现。大家帮忙看看啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top