OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3110|回复: 2

请教一下大家和原子哥,关于清空串口缓存区的问题

[复制链接]

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
发表于 2021-4-1 09:00:59 | 显示全部楼层 |阅读模式
请教一下大家和原子哥,关于清空串口缓存区的问题
  1. void Int_serial1() interrupt 16
  2. {
  3.        
  4.         if(SCON1 & 0x01) // RI1
  5.         {
  6.                 SCON1 &= (~0x01);  //RI1=0
  7.        
  8.         
  9.                 if(WriteReciPoint<BUFRECI)
  10.                 {
  11.                         Buf_Reci[WriteReciPoint]=SBUF1;
  12.                         WriteReciPoint++;
  13.                 }
  14.       

  15.        if((0xEE==Buf_Reci[0])&&(0xB1==Buf_Reci[1])&&(0x04==Buf_Reci[6])&&(0x01==Buf_Reci[9])&&(0xFF==Buf_Reci[13]))
  16.                       {
  17.                SPEAKER_CTL1(ON);
  18.                  msDelay1(1000);            
  19.                WriteReciPoint=0;
  20.                  Buf_Reci[13]=0;
  21.               memset(Buf_Reci,0,sizeof(Buf_Reci));
  22.                        }
  23.          else if((0xEE==Buf_Reci[0])&&(0xB1==Buf_Reci[1])&&(0x04==Buf_Reci[6])&&(0x00==Buf_Reci[9])&&(0xFF==Buf_Reci[13]))
  24.                        {
  25.                SPEAKER_CTL1(OFF);
  26.                 msDelay1(1000);  
  27.                 WriteReciPoint=0;
  28.                  Buf_Reci[13]=0;
  29.               memset(Buf_Reci,0,sizeof(Buf_Reci));
  30.                        }
  31.          else if((0xEE==Buf_Reci[0])&&(0xB1==Buf_Reci[1])&&(0x05==Buf_Reci[6])&&(0x01==Buf_Reci[9])&&(0xFF==Buf_Reci[13]))
  32.                        {
  33.                  SPEAKER_CTL1(OFF);
  34.                  msDelay1(1000);  
  35.                 WriteReciPoint=0;
  36.                  Buf_Reci[13]=0;
  37.              memset(Buf_Reci,0,sizeof(Buf_Reci));
  38.                        }
  39.         else if((0xEE==Buf_Reci[0])&&(0xB1==Buf_Reci[1])&&(0x05==Buf_Reci[6])&&(0x00==Buf_Reci[9])&&(0xFF==Buf_Reci[13]))
  40.                        {
  41.                   SPEAKER_CTL1(ON);
  42.                 msDelay1(1000);   
  43.                 WriteReciPoint=0;
  44.                 Buf_Reci[13]=0;
  45.                 memset(Buf_Reci,0,sizeof(Buf_Reci));
  46.                        }
  47.          else if((0xEE==Buf_Reci[0])&&(0xB1==Buf_Reci[1])&&(0x14==Buf_Reci[2])&&(0x08==Buf_Reci[6])&&(0x1A==Buf_Reci[7])&&(0x00==Buf_Reci[8])&&(0xFF==Buf_Reci[13]))
  48.                        {
  49.                   SPEAKER_CTL1(ON);
  50.                 msDelay1(1000);
  51.                 WriteReciPoint=0;
  52.                 Buf_Reci[13]=0;
  53.                memset(Buf_Reci,0,sizeof(Buf_Reci));
  54.                        }
  55.          else if((0xEE==Buf_Reci[0])&&(0xB1==Buf_Reci[1])&&(0x14==Buf_Reci[2])&&(0x08==Buf_Reci[6])&&(0x1A==Buf_Reci[7])&&(0x01==Buf_Reci[8])&&(0xFF==Buf_Reci[13]))
  56.                        {
  57.                   SPEAKER_CTL1(OFF);
  58.                 msDelay1(1000);
  59.                 WriteReciPoint=0;
  60.                 Buf_Reci[13]=0;
  61.                memset(Buf_Reci,0,sizeof(Buf_Reci));
  62.                        }
  63.           else if((0xEE==Buf_Reci[0])&&(0xB1==Buf_Reci[1])&&(0x14==Buf_Reci[2])&&(0x08==Buf_Reci[6])&&(0x1A==Buf_Reci[7])&&(0x02==Buf_Reci[8])&&(0xFF==Buf_Reci[13]))
  64.                        {
  65.                   SPEAKER_CTL1(ON);
  66.                   msDelay1(1000);  
  67.                   WriteReciPoint=0;
  68.                   Buf_Reci[13]=0;
  69.                   memset(Buf_Reci,0,sizeof(Buf_Reci));
  70.               
  71.                        }                
  72.         }

  73. }
复制代码
这是我的程序,没收到一段报文时,进行判断,判断后无论是否正确都进行清除,以上的代码并没有达到目标,大家帮我提一下建议
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
发表于 2021-4-2 11:58:24 | 显示全部楼层
本帖最后由 simms01 于 2021-4-2 11:59 编辑

绑定帮顶
回复 支持 反对

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-4-2 14:08:32 | 显示全部楼层

谢谢,兄弟,你看出什么毛病了吗?14个报文的,读取删除再读取没啥问题,就是那三个长的,解决不了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 06:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表