串口接收数据不正确

2019-03-23 18:20发布

用自己写的上位机程序读传感器,收到的协议是正确的(7个字节 01 0D 3个数据字节 2个校验字节),但用stm32的串口3读出来的却是4个字节(与协议完全不对),没有发生溢出错误,使stm32与上位机通讯正常,这是什么原因呢??
  1. void USART3_IRQHandler(void)
  2. {               
  3. if(USART_GetITStatus(USART3,USART_IT_RXNE)==SET)                  
  4.         {
  5.                 Delay2(1);
  6.                 USART_ClearITPendingBit(USART3,USART_IT_RXNE);
  7.                 U3_ReceivedBuf[U3_flag++] = USART_ReceiveData(USART3);                         
  8.         }
  9.        
  10.         if(USART_GetFlagStatus(USART3,USART_FLAG_ORE)!=RESET)
  11.     {
  12.         USART_ClearFlag(USART3,USART_FLAG_ORE);    //?SR
  13.                 WriteString(165,80,"overflow",Red);       
  14.         }         
  15. }
复制代码

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
仙景
1楼-- · 2019-03-25 00:00
一般来说是要在硬件板的串口加上拉电阻,这样保持数据稳定,另外用示波器把信号读出来看一下,找出是发多了,还是接收多了,一步一步分析问题。
vzvxvcvv
2楼-- · 2019-03-25 05:08
延时影响了接收吧
EE_MCU
3楼-- · 2019-03-25 07:43
 精彩回答 2  元偷偷看……
a19911103hsy
4楼-- · 2019-03-25 10:21
延时放在主程序,中断里面最好不要延时 或者while之类的 保证快进快出
wolfgang2016
5楼-- · 2019-03-25 12:28
检查收发的串口起停位的设置
ienglgge
6楼-- · 2019-03-25 18:18
 精彩回答 2  元偷偷看……

一周热门 更多>