Board logo

标题: STM32通过GPRS与服务器建立TCP连接 [打印本页]

作者: yuyang911220    时间: 2015-11-25 20:19     标题: STM32通过GPRS与服务器建立TCP连接

u16 USART3_CGREG_Cnt;u8 USART3_Task_Cnt;
//task_GPRS为GPRS处理任务,每50ms~200ms调用一次
void task_GPRS()
{
  switch(USART3_Task_Cnt)
  {
    case 0:
//       SendUartStr("case0",1);
      if(GprsState.bits.Timeout == true)
      {
        GprsState.Flag =0x00000000;
        {
          GPIO_InitTypeDef GPIO_InitStructure;
         
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_Init(GPIOC, &GPIO_InitStructure);
          //GPIO_SetBits(GPIOC, GPIO_Pin_9);
          GPIO_ResetBits(GPIOC, GPIO_Pin_9);
          SetGprsTime(3000);
          USART3_Task_Cnt = 1;
        }
      }
      break;
    case 1:
//       SendUartStr("case1",1);
      if(GprsState.bits.Timeout == true)
      {
        GPIO_InitTypeDef GPIO_InitStructure;
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC, GPIO_Pin_9);
        //GPIO_ResetBits(GPIOC, GPIO_Pin_9);
        SetGprsTime(1000);
        USART3_Task_Cnt = 2;
      }
      break;
    case 2:
//       SendUartStr("case2",1);
      if(GprsState.bits.Timeout == true)
      {
        GPIO_InitTypeDef GPIO_InitStructure;
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC, GPIO_Pin_8);
        //GPIO_ResetBits(GPIOC, GPIO_Pin_8);
        SetGprsTime(50);
        USART3_Task_Cnt = 3;
      }
      break;
    case 3:
//       SendUartStr("case3",1);
      if(GprsState.bits.Timeout == true)
      {
        GPIO_InitTypeDef GPIO_InitStructure;
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        //GPIO_SetBits(GPIOC, GPIO_Pin_8);
        GPIO_ResetBits(GPIOC, GPIO_Pin_8);
        SetGprsTime(3000);
        USART3_Task_Cnt = 4;
      }
      break;
    case 4:
      if(GprsState.bits.Timeout == true)
      {
//         SendUartStr("AT+IPR=9600",3);
//         Delay(500);
        SendUartStr("AT+CREG=1",3);
        USART3_Task_Cnt = 5;
        SetGprsTime(4000);
      }
      break;
    case 5:
      if(GprsState.bits.Timeout == true)
      {
        SendUartStr("AT+CGREG=1",3);
//         USART3_Task_Cnt = 6;
        USART3_Task_Cnt = 7;
        USART3_CGREG_Cnt = 4000;
        SetGprsTime(1000);
      }
        break;
    case 6:
//       if(GprsState.bits.Timeout == true)
//       {
//         SendUartStr("AT+CREG?",3);
//         SendUartStr("AT+CGREG=1",3);
//         SendUartStr("AT+CGREG?",3);
//         if(GprsState.bits.AT_CGREG_OK == true)
//         {
//           USART3_Task_Cnt = 7;
//           SetGprsTime(5000);
//         }
//         else
//         {
//           USART3_CGREG_Cnt--;
//           if(USART3_CGREG_Cnt == 0)
//           {
//             USART3_Task_Cnt = 0;
//           }
//         }
//       }
      USART3_Task_Cnt = 7;
      break;
    case 7:
      if(GprsState.bits.Timeout == true)
      {
        SendUartStr("AT^SICS=0,conType,GPRS0",3);
        USART3_Task_Cnt = 8;
        SetGprsTime(100);
      }
      break;
    case 8:
      if(GprsState.bits.Timeout == true)
      {
//         SendUartStr("AT^SICS=0,user,gprs",3);
        USART3_Task_Cnt = 9;
        SetGprsTime(100);
      }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0