打印
[STM32F1]

关于串口中断接收的问题

[复制链接]
879|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
749120145|  楼主 | 2017-10-17 09:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的上位机给STM32发送串口数据,比如第一次发送的是123 串口上得到的是12,再发123得到的是312,之后再发都是312.我想应该是少了一个语句没把最后一个字节的数据接收过来但不知道是哪一句。下面贴上我的程序 麻烦各位了void USART1_IRQHandler(void)
{
        volatile uint8_t revdata;
/*---------------------------------------------*/
  if(USART1->SR&(1<<5))
        {
//            revdata = USART1->SR;
            revdata = USART1->DR;
            //USART1->SR = 0;
            SMQ_flag=1;
      if(SMQ_flag==1)
      {
          SMQReceive(revdata);
      }else
            {
                      YtReceive(revdata);
            }
      revdata=0;
        }
}


void SMQReceive(uint8_t data)
{
        uint8_t i;
/*---------------------------------------------*/
//receive saomiaoqiang data flag=1
         stReceiveDataBuf.data[stReceiveDataBuf.length++] = data;
   while((USART1->SR&(1<<5))==0){}
         data=0;
        if(stReceiveDataBuf.length == 11)
        {
                     frameStart** = 1;
//       if(stReceiveDataBuf.data[10]==0x0d)
//                         {
//                             frameStart** = 1;
//                         }
//       else
//                         {
                           for(i=0;i<stReceiveDataBuf.length;i++)
                                 {
                                     stReceiveDataBuf.data[i] = 0;
                                 }
                                 stReceiveDataBuf.length=0;
                         }                                 
//        }
}

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

46

帖子

1

粉丝