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

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条回答
632588785
1楼-- · 2019-07-14 22:46
人中狼 发表于 2018-6-13 16:02
把串口助手设置为16进制接收试试

16进制效果也是不全的,只是显示35 34 0D 0A
chenwei6991627
2楼-- · 2019-07-15 02:55
 精彩回答 2  元偷偷看……
人中狼
3楼-- · 2019-07-15 05:17
把“ ”去掉试试,看格式是“ "以前的都没显示
lee_st
4楼-- · 2019-07-15 10:05
把“ ”前面的所有“”去掉试试
@曲终人散@
5楼-- · 2019-07-15 14:37
波特率,串口初始化好好检查一下
勇哥-lzu
6楼-- · 2019-07-15 18:44
printf是从串口几打印的?

一周热门 更多>