[应用相关] 串口接收数据不正确

[复制链接]
884|4
 楼主| lwsn 发表于 2017-3-29 21:03 | 显示全部楼层 |阅读模式
用自己写的上位机程序读传感器,收到的协议是正确的(7个字节 01 0D 3个数据字节 2个校验字节),但用stm32的串口3读出来的却是4个字节(与协议完全不对),没有发生溢出错误,使stm32与上位机通讯正常,这是什么原因呢??
void USART3_IRQHandler(void)
{               
if(USART_GetITStatus(USART3,USART_IT_RXNE)==SET)                  
        {
                Delay2(1);
                USART_ClearITPendingBit(USART3,USART_IT_RXNE);
                U3_ReceivedBuf[U3_flag++] = USART_ReceiveData(USART3);                          
        }
        
        if(USART_GetFlagStatus(USART3,USART_FLAG_ORE)!=RESET)
    {
        USART_ClearFlag(USART3,USART_FLAG_ORE);    //?SR
                WriteString(165,80,"overflow",Red);        
        }         
}
豆腐块 发表于 2017-3-29 21:18 | 显示全部楼层
中断里面用延时不太好吧
可可球 发表于 2017-3-29 21:29 | 显示全部楼层
stm32与上位机通讯正常,这说明stm32的串口是正常的,这就要找找你的传感器的串口的问题了,或者是波特率不正确。
Levenburg 发表于 2017-3-29 21:39 | 显示全部楼层
一帧数据发送完毕可以立即关中断。
Thorald 发表于 2017-3-29 21:57 | 显示全部楼层
波特率是一个可能原因,还有一个可能原因就是数据线的问题,我以前也遇到过读数不正确的情况,怎么检查都没问题,结果无意间换了根线好了。你可以试试看是不是这个原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

824

帖子

1

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