[应用相关] 串口数据读取错误

[复制链接]
1645|12
 楼主| lefeng 发表于 2018-8-30 08:54 | 显示全部楼层 |阅读模式
想请教一个问题,我用stm32F103芯片获取传感器ASCII码数据,在正常模式下,其应该发送的是数据应该是:“0”“.”0""0""0""1""\t""5""4""\r""\n",从示波器上看发送过来的数据没问题,但是我这边将读取的数据通过printf函数发送给串口调试助手,但是从助手上看只只有部分数据读取:"5""4""\r""\n",不知道哪里出问题了,请教各位了,谢谢,下面是相关函数。

void USART3_IRQHandler(void)
{  
    uint8_t  ch;
         
        // 接收数据
  if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
  {         
        USART_ClearITPendingBit(USART3, USART_IT_RXNE);// 清除中断标志
               
        ch = USART_ReceiveData(USART3);
        Com3RBuf[Com3Index]=(uint8_t)ch;

       printf("ch=%d\r\n",(uint8_t)Com3RBuf[Com3Index]);
       Com3Index++;

      if(Com3RBuf[2]==0x0A))
      {
           Rec3FinishF=1;
           Com3Index=0;
       }
  }
         // 发送数据
         
     else if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
    {
      USART_ClearITPendingBit(USART3, USART_IT_TXE);
               
     if(Com3Index<Index3End)
     {
        USART_SendData(USART3, (uint8_t)Com3TBuf[Com3Index++]);
        while(USART_GetFlagStatus(USART3,USART_FLAG_TXE) == RESET);               
      }
     else
      {
        Com3Index=0;
        USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
     }
   }
        }
CaLipton 发表于 2018-8-30 09:52 | 显示全部楼层
把串口助手设置为16进制接收试试
Rospiers 发表于 2018-8-30 10:40 | 显示全部楼层
16进制效果也是不全的,只是显示35 34 0D 0A
Lewisnx 发表于 2018-8-30 10:47 | 显示全部楼层
那就是0要特殊处理的
CCompton 发表于 2018-8-30 10:54 | 显示全部楼层
把“\t”去掉试试,看格式是“\t"以前的都没显示
Richardd 发表于 2018-8-30 11:09 | 显示全部楼层
把“\t”前面的所有“”去掉试试
Mattheww 发表于 2018-8-30 11:18 | 显示全部楼层
波特率,串口初始化好好检查一下
Erichk 发表于 2018-8-30 11:37 | 显示全部楼层
把else if前面的else去掉试试看
Thorald 发表于 2018-8-30 11:43 | 显示全部楼层
能正常显示说明波特率是对的,应该去掉else,这样子就都能看到了
晓伍 发表于 2018-9-1 16:00 | 显示全部楼层
用串口助手读出来的是什么
观海 发表于 2018-9-1 16:06 | 显示全部楼层
有没有可能是数据解析问题
guanjiaer 发表于 2018-9-3 10:39 | 显示全部楼层
流程控制问题
xiaoqizi 发表于 2018-9-4 11:05 | 显示全部楼层
用示波器看看波形是什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

200

主题

1087

帖子

0

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