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);
} |