⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 user.c

📁 C语言源代码及相关资料
💻 C
📖 第 1 页 / 共 2 页
字号:
		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 + -