大家都是用什么方式判断串口接收一段数据结束的呢

2019-12-20 21:46发布

在使用GSM模块的时候,需要通过串口与模块进行通信。

这其中既有命令反馈的接收,也有通信数据的接收,它们的数据长度和接收的延迟都不一样。

我目前的做法是:串口接收到第一个数据的时候开始计时,如果接收到下一个数据则将计时清零,如果超时则判别一段数据接收完毕

我感觉这样做的效率有点低,好像无法利用DMA,不知道大家有什么好的方式呢?

我看手册上说STM32的串口有总线闲时中断,不知道这个是什么状况,可否利用一下呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
dzymushi
2019-12-22 06:12
不要质疑大猫侠。
指令都是“ ”结束的
         for(;;)
                 {
                  memset(userPacket,0,606);
                   rxIndex=0;
              UART0_send("AT+CSMINS? ");         
                  gsmWaitDalays(10);
                  if(NULL!=strstr(userPacket,"0,1"))
                     break;
                  else
                            gprsRetry++;
                  if(gprsRetry>=20)
                         return 0x03;//没有SIM卡
                  }

一周热门 更多>