裸机跑AT指令解决延迟问题

背景,国产单片机,跑裸机。实现AT指令发送与接收,AT指令一般情况都是延迟300ms,这个时间单片机可以做好多事情,所以需要单片机在延迟时做其他事情。所以设计了一个软件架构,代码如下:

软件架构:

     switch(cmd)
     {
          case AT_SEND://发送AT指令
          {
              USART_Send(USARTx_GPRS,AT_Cmd[index].SEND_CMD,AT_StrLength[index]); //串口发送数据 AT_Cmd存放AT指令数组

                 gTime.bDelay280msflg = 0;
              cmd = CHEAK_TIME;
              break;
          }
         case CHEAK_TIME: //查看时间
         {
             if(gTime.bDelay280msflg) //at指令延迟280ms
             {
                 gTime.bDelay280msflg = 0;
                 cmd = CMPSTR;//时间已到,比较字符串
             }
             else{cmd = OTHER;}//时间没到,做其他事情
             break;
         }
        case CMPSTR://比较字符串
         {
             AT_ReCount = Usart2_RecData(AT_ReBuff,1024);//获取at指令返回值
            if(0 !=AT_ReCount)
            {
                if(strstr(AT_ReBuff,AT_Cmd[index].AcK))  //查找是否接受正确
                {
                    index++; //正确,发送下一个AT指令
                }
                else
                {

                }
            }
            memset(AT_ReBuff,0,1024);
            AT_ReCount = 0;
            cmd = AT_SEND;
            break;
          }
          case OTHER: //做事情
          {

                //用户自己实现
             cmd = CHEAK_TIME; //查看时间
              break;
          }
     }

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值