📄 user.c
字号:
char szOut[48];
sprintf(szOut, "\r\n== System Resource Sem=0x%x\r\n", (uint32)((void *)gw_pSysFlashSem) );
__DBG0_printf1(szOut);
}
#endif
Init_Glb_Param(); //初始化全局变量
//GetTermID(); //得到终端ID
//First_Run_Flag:系统第一次启动标志,1个字节.为0时表示已执行第一次启动,非0表示还未执行过
GetCustomValue(0x0005,&First_Run_Flag);
if(First_Run_Flag>0)
{
INT16U len=0,moveAddr=0;
//max add for ini flash
W25X32_Erase_Semphore(setup_sec, mileage_sec);
//
GetOmoveAddr(CUSTOM_PARAMS,CUSTOM_PARAMS_COUNT,0x0005,&len,&moveAddr);
W25X32_WRITE(GetAddr(CUSTOM_PARAMS_SEC,moveAddr),sizeof(First_Run_Flag),&First_Run_Flag,CUSTOM_PARAMS_DATASIZE);
//W25X32_Erase_2(FIRSTSEC, LASTSEC);
//max add for ini flash
Ini_Sec_counter( &setup_sec, 'S', SETUP_PARAMS_SEC );
Ini_Sec_counter( &work_sec, 'W', WORK_PARAMS_SEC );
Ini_Sec_counter( &custom_sec, 'C', CUSTOM_PARAMS_SEC );
Ini_Sec_counter( &mileage_sec, 'M', MILEAGE_ACC_SEC );
//
Renew_Initializers(); //恢复出厂值
Renew_Initializers_Custom(); //恢复自定义参数出厂设置
First_Run_Flag=0; //防止更新了Reconn_Flag标志进行重连接
}
#if 0
{//TEST //盲区保存的当前地址
uint8 tempBuff[4];
uint8 i=0;
cur_BlindSection_SaveAddr=0;
memset(tempBuff,0,sizeof(tempBuff));
for(i=0;i<sizeof(tempBuff);i++)
tempBuff[i]=(uint8)(cur_BlindSection_SaveAddr>>(8*(sizeof(tempBuff)-i-1)));
SaveCustomValue(0x0014,tempBuff);
}
{//0x0015, //盲区回传的当前地址 占用4个字节
uint8 tempBuff[4];
uint8 i=0;
cur_BlindSection_RepairAddr=0;
memset(tempBuff,0,sizeof(tempBuff));
for(i=0;i<sizeof(tempBuff);i++)
tempBuff[i]=(uint8)(cur_BlindSection_RepairAddr>>(8*(sizeof(tempBuff)-i-1)));
SaveCustomValue(0x0015,tempBuff);
}
#endif
//Renew_Initializers(); //恢复出厂值
//0:表示不向驾驶员手机回复登陆提示信息;
//1:表示向驾驶员手机回复登陆提示信息
GetParamValue(0x030B,&G_RestMsg); //得到登陆提示信息 占用1个字节,出厂默认为0。
//得到驾驶员登陆信息
GetMotormanNumToFlash();
//是否安装调度屏 占用1个字节,缺省值为0无调度屏,1为安装了调度屏
GetParamValue(0x0307,&schedLCD_BuildIn_OK); //从flash中取是否安装调度屏
if(schedLCD_BuildIn_OK>0x01) //无效状态。
schedLCD_BuildIn_OK=0x00;
GetTrace_FORM(); //得到上次设置的追踪参数。
GetParamValue(0x0301,Password);//从flash中取终端密码值
GetParamValue(0x0402,Lmt_V_Time);//低电压门限值及采样次数时间
GetHeartSlot(); //得到发送心跳包时间间隔
GetCurCfgWorkParamID(&cfg_WorkParam);//得到当前的工作参数信息
GetWorkParamUploadCfg1(); //工作参数上传设置一(指定时间点方式)
GetWorkParamUploadCfg2(); /////得到通信方式及工作参数上传设置2时间间隔距离间隔
GetSetupCompressRevert(); //得到//设置压缩回传的参数信息
{//盲区补传数据设置
uint8 buff[8];
uint8 i=0;
memset(buff,0,sizeof(buff));
GetParamValue(0x0211,buff); //盲区补传数据设置
BlindSection_Cfg=0;
for(i=0;i<sizeof(buff);i++)
BlindSection_Cfg+=(((unsigned long long)buff[i])<<(8*(sizeof(buff)-i-1)));
}
{//盲区保存的当前地址
uint8 buff[4];
uint8 i=0;
memset(buff,0,sizeof(buff));
GetCustomValue(0x0014,buff);
cur_BlindSection_SaveAddr=0;
for(i=0;i<sizeof(buff);i++)
cur_BlindSection_SaveAddr+=((uint32)buff[i]<<(8*(sizeof(buff)-i-1)));
}
{//盲区回传的当前地址
uint8 buff[4];
uint8 i=0;
memset(buff,0,sizeof(buff));
GetCustomValue(0x0015,buff);
cur_BlindSection_RepairAddr=0;
for(i=0;i<sizeof(buff);i++)
cur_BlindSection_RepairAddr+=((uint32)buff[i]<<(8*(sizeof(buff)-i-1)));
}
//////////////自检-------------////////////////////
{
static char * GPRS_cmd[]={"\r\nAT+CPIN?\r\n\0"}; //发送AT
uint8 uiReviceBuf0[TRANSINFOLEN];
uint16 uiNum=0;
char * p=NULL;
char wrt_data[12]="flash test";
char check[12];
//TEST
//W25X32_READ_2_Semphore(0,sizeof(uiReviceBuf0),uiReviceBuf0);
// 初始化GPS开关管脚P0.17
/////////////////////////////////////////////
GPIO0_Init((1<<17),1); //初始化P0.17为输出
IO0SET=0x00020000;//设置P0.17为高,开GPS模块
///////////////////////////////////////////////
//初始化管脚GPS指示灯管脚P2.7
/////////////////////////////////////////////
GPIO2_Init((1<<7),1); //初始化P2.7为输出
P2_GPIOSet((1<<7)); //输出高电平,GPS指示灯灭;1-灯灭,0-灯亮.
///////////////////////////////////////////////
LoadUart2(UART2, uiReviceBuf0, &uiNum);
OSTimeDlyHMSM(0,0,6,0);
uartWrite(UART2,(uint8 *)GPRS_cmd[0],strlen(GPRS_cmd[0]),NULL);
OSTimeDlyHMSM(0,0,0,300);
LoadUart2(UART2, uiReviceBuf0, &uiNum);
#if 1
W25X32_Erase_Semphore(350,350);
W25X32_WRITE(GetAddr(350,0),sizeof(wrt_data),(uint8 *)wrt_data,12);
W25X32_READ_Semphore(GetAddr(350,0),sizeof(check),(uint8 *)check);
if (strcmp(check,wrt_data)!=0)
{//FLASH自检不正常,GPS指示灯慢闪2次
P2_GPIOClr((1<<7));//输出低电平,GPS指示灯亮
OSTimeDlyHMSM(0,0,0,75);
P2_GPIOSet((1<<7));
OSTimeDlyHMSM(0,0,0,600);
P2_GPIOClr((1<<7));
OSTimeDlyHMSM(0,0,0,75);
P2_GPIOSet((1<<7));
OSTimeDlyHMSM(0,0,0,600);
P2_GPIOClr((1<<7));
uartWrite(UART3,(uint8 *)"flash have problem\r\n",strlen("flash have problem\r\n"),NULL);
}
#endif
/* if(First_Run_Flag!=0)//等于0,表示FALSH自检正常
{ //FLASH自检不正常,GPS指示灯慢闪2次
P2_GPIOClr((1<<7));//输出低电平,GPS指示灯亮
OSTimeDlyHMSM(0,0,0,75);
P2_GPIOSet((1<<7));
OSTimeDlyHMSM(0,0,0,600);
P2_GPIOClr((1<<7));
OSTimeDlyHMSM(0,0,0,75);
P2_GPIOSet((1<<7));
OSTimeDlyHMSM(0,0,0,600);
P2_GPIOClr((1<<7));
} */
if((p=strstr((char * )uiReviceBuf0,"ERROR"))!=NULL) // 找到ERROR代表SIM Card未裝上 //
{ //SIM自检不正常,GPS指示灯慢闪3次
P2_GPIOClr((1<<7));
OSTimeDlyHMSM(0,0,0,75);
P2_GPIOSet((1<<7));
OSTimeDlyHMSM(0,0,0,600);
P2_GPIOClr((1<<7));
OSTimeDlyHMSM(0,0,0,75);
P2_GPIOSet((1<<7));
OSTimeDlyHMSM(0,0,0,600);
P2_GPIOClr((1<<7));
OSTimeDlyHMSM(0,0,0,75);
P2_GPIOSet((1<<7));
OSTimeDlyHMSM(0,0,0,600);
P2_GPIOClr((1<<7));
uartWrite(UART3,(uint8 *)"Not have SIMcard\r\n",strlen("Not have SIMcard\r\n"),NULL);
}
if((p=strstr((char * )uiReviceBuf0,"OK"))==NULL) // 沒有找到OK代表GSM和GPRS有問題
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -