为什么串口接收的数据读取不对

2019-07-14 18:41发布

       各位大神,想请教一个问题,我用STM32F103芯片获取传感器ASCII码数据,在正常模式下,其应该发送的是数据应该是:“0"".""0""0""0""1"" ""35""34"" "" ",从示波器上看发送过来的数据没问题,但是我这边将读取的数据通过printf函数发送给串口调试助手,但是从助手上看只只有部分数据读取:"35""34"" "" ”,不知道哪里出问题了,因为本人是新手,所以请教各位了,谢谢,下面是相关函数。
  1. void USART3_IRQHandler(void)
  2. {  
  3.     uint8_t  ch;
  4.          
  5.         // 接收数据
  6.   if(USART_GetiTStatus(USART3, USART_IT_RXNE) != RESET)
  7.   {         
  8.         USART_ClearITPendingBit(USART3, USART_IT_RXNE);// 清除中断标志
  9.                
  10.         ch = USART_ReceiveData(USART3);
  11.         Com3RBuf[Com3Index]=(uint8_t)ch;

  12.        printf("ch=%d ",(uint8_t)Com3RBuf[Com3Index]);
  13.        Com3Index++;

  14.       if(Com3RBuf[2]==0x0A))
  15.       {
  16.            Rec3FinishF=1;
  17.            Com3Index=0;
  18.        }
  19.   }
  20.          // 发送数据
  21.          
  22.      else if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
  23.     {
  24.       USART_ClearITPendingBit(USART3, USART_IT_TXE);
  25.                
  26.      if(Com3Index<Index3End)
  27.      {
  28.         USART_SendData(USART3, (uint8_t)Com3TBuf[Com3Index++]);
  29.         while(USART_GetFlagStatus(USART3,USART_FLAG_TXE) == RESET);               
  30.       }
  31.      else
  32.       {
  33.         Com3Index=0;
  34.         USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
  35.      }
  36.    }
  37.         }
复制代码



补充内容 (2018-6-13 18:00):
写错了,发送的数据是“0”“.”0""0""0""1"" ""5""4"" "" ",接收到的是"5""4"" "" "
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
勇哥-lzu
1楼-- · 2019-07-15 19:36
 精彩回答 2  元偷偷看……
zhifubao
2楼-- · 2019-07-15 23:24
这位小同志,你把else if前面的else去掉试试看。
zhifubao
3楼-- · 2019-07-16 02:08
printf函数肯定要重载put函数,我想看看你的put函数有没有问题。
zhj1163979310
4楼-- · 2019-07-16 07:55
                                                                    
dianziaihao88
5楼-- · 2019-07-16 12:15
同意10楼的,把else if里面的else去掉
超级开发板
6楼-- · 2019-07-16 15:21
 精彩回答 2  元偷偷看……

一周热门 更多>