zack 1 year ago
parent
commit
712c14b373
13 changed files with 595 additions and 1805 deletions
  1. 36 11
      Core/Inc/ConfigMacros.h
  2. 5 3
      Core/Inc/database.h
  3. 1 1
      Core/Inc/ml307a.h
  4. 6 1
      Core/Inc/tt808.h
  5. 216 73
      Core/Src/database.c
  6. 29 16
      Core/Src/freertos.c
  7. 1 1
      Core/Src/main.c
  8. 20 10
      Core/Src/ml307a.c
  9. 240 165
      Core/Src/tt808.c
  10. 36 39
      MDK-ARM/dtu.uvoptx
  11. 5 5
      MDK-ARM/dtu.uvprojx
  12. 0 56
      Output/dtu.lnp
  13. 0 1424
      Output/startup_stm32f103xe.lst

+ 36 - 11
Core/Inc/ConfigMacros.h

@@ -10,7 +10,8 @@
 #include <math.h>
 
 #define BUFFER_SIZE 256
-#define open4G			1	
+#define timingPush		1//定时出入库,外出测试
+#define open4G			1
 #define openBT			1	
 #define openUpload		1	
 #define updateMenu		1	
@@ -39,6 +40,8 @@
 
 #define resetDevAddr				((uint32_t)0x8050800)  
 #define SysModeAddr					((uint32_t)0x8050900)  
+#define tt808serialNum				((uint32_t)0x8051000)  
+#define phoneNumADDR				((uint32_t)0x8051100)  
 
 
 
@@ -53,7 +56,14 @@
 
 //*tt808
 #define JLPTIP		"121.199.29.128"
-#define JLPTPORT	7342
+#define JLPTPORT	7342			//平台
+
+//#define JLPTIP		"118.31.22.26"
+//#define JLPTPORT	8901
+
+
+
+
 #define MessageID_authentication	0x0102 //鉴权
 #define MessageID_heartbeat			0x0002 //心跳
 #define MessageID_location			0x0200 //地址
@@ -72,6 +82,10 @@
 #define YES 0x00
 #define NO  0x01
 
+#define phoneNum 	0x000016000008
+#define phoneNumxy 	0x12345699601
+
+
 /* WDI */
 #define TOGGLE_WDI_PIN(htim_instance) \
 do { \
@@ -231,7 +245,7 @@ typedef enum {
 
 typedef struct {
 	
-	uint8_t LSH;
+	uint16_t LSH;
 	uint8_t Rtime[6];
 	uint32_t C_Seconds;
 	uint8_t L1Lockstatus;
@@ -247,10 +261,15 @@ typedef struct {
 	uint32_t timeStamp;
 	
 	//*上传数据
-	uint32_t alarmFlag;		//报警标志
-	uint32_t statusFlag;	//状态标志
-    uint32_t latitude;		//纬度
-    uint32_t longitude;		//经度
+	uint16_t alarmFlagH;		//报警标志
+	uint16_t alarmFlagL;		//报警标志
+	uint16_t statusFlagH;		//状态标志
+	uint16_t statusFlagL;		//状态标志
+    uint16_t latitudeH;		//纬度
+    uint16_t latitudeL;		//纬度
+    uint16_t longitudeH;		//经度
+    uint16_t longitudeL;		//经度
+	
     uint16_t height;		//高度
     uint16_t speed;			//速度
     uint16_t direction;		//方向
@@ -268,11 +287,13 @@ typedef struct {
     uint16_t loc_pullIndex;		//出库指针
     uint16_t loc_pushSize;		//入库刻度
     uint16_t loc_pullSize;		//出库刻度
+    uint32_t loc_Conter;	//地址总擦计数
 	
     uint16_t eve_pushIndex;		//入库指针
     uint16_t eve_pullIndex;		//出库指针
     uint16_t eve_pushSize;		//入库刻度
     uint16_t eve_pullSize;		//出库刻度
+    uint32_t eve_Conter;	//地址总擦计数
 } Headinfo;
 
 
@@ -288,10 +309,14 @@ typedef struct {
     uint16_t eve_pullSize;		//出库刻度
 	
 	
-	uint32_t alarmFlag;		//报警标志
-	uint32_t statusFlag;	//状态标志
-    uint32_t latitude;		//纬度
-    uint32_t longitude;		//经度
+	uint16_t alarmFlagH;		//报警标志
+	uint16_t alarmFlagL;		//报警标志
+	uint16_t statusFlagH;		//状态标志
+	uint16_t statusFlagL;		//状态标志
+    uint16_t latitudeH;		//纬度
+    uint16_t latitudeL;		//纬度
+    uint16_t longitudeH;		//经度
+    uint16_t longitudeL;		//经度
     uint16_t height;		//高度
     uint16_t speed;			//速度
     uint16_t direction;		//方向

+ 5 - 3
Core/Inc/database.h

@@ -16,10 +16,12 @@ void TestPrintStruct(DatabaseLoc *ptr,uint8_t temppush,uint8_t temppull);
 extern DatabaseLoc *dblocptr;
 extern DatabaseEvent *dbeveptr;
 
-
+void PushpullWork(void);
 extern uint16_t PDA_pushArr[1024];
 void Database_Pull(uint8_t object);
-
-extern bool MiddleObj;
+extern bool uploaweork;
+extern uint16_t timecountSec;
+extern uint16_t timecount;
+extern uint16_t timecountMin;
 #endif /*__DATABASE_H*/
 

+ 1 - 1
Core/Inc/ml307a.h

@@ -25,6 +25,6 @@ extern bool signal;
 void ML307AReset(void);
 void TcpConn(char *value, uint8_t cid, char *IPaddr, uint16_t port, uint8_t tcpConnmode);
 extern bool resetBTmodule;
-extern uint8_t TimeBCD[6];
+extern uint16_t phonenum[3];
 #endif /*__ML307A_H*/
 

+ 6 - 1
Core/Inc/tt808.h

@@ -28,7 +28,12 @@ void pushpullWork(void);
 extern bool Retrans;
 
 extern bool Offline ;
-
+void Test485Re(void);
 extern bool Online;
+void hexToBcd_arr(uint8_t* array, size_t length, uint8_t* out);
+extern bool phonenull;
+uint16_t swapBytes16(uint16_t value);
+uint32_t swapBytes32(uint32_t value);
+
 #endif /*__TT808_H*/
 

+ 216 - 73
Core/Src/database.c

@@ -13,18 +13,20 @@ DatabaseEvent dbeve;
 DatabaseLoc *dblocptr = &dbloc;
 DatabaseEvent *dbeveptr = &dbeve;
 
-bool MiddleObj =false;
-
+bool uploaweork=false;
 /**
   * @breaf 数据库初始化
   * @Explanation 向各头部写入关键信息
   */
 void Database_init(uint16_t pushsize_loc, uint16_t pullsize_loc,uint16_t pushsize_eve, uint16_t pullsize_eve)
 {
-	dblocptr->location.alarmFlag=0x00000000;
-	dblocptr->location.statusFlag=0x00000002;
-	dblocptr->location.height=0x0000;
-	dblocptr->location.direction=0x0000;
+	dblocptr->headinfo.loc_Conter=0;
+	
+	dblocptr->location.alarmFlagH=0;
+	dblocptr->location.alarmFlagL=0;
+	
+	dblocptr->location.height=0;
+	dblocptr->location.direction=0;
 	dblocptr->location.signalCmd=0x30;
 	dblocptr->location.signalCmd_len=0x01;
 	dblocptr->location.atellitesCmd=0x31;
@@ -43,7 +45,7 @@ void Database_init(uint16_t pushsize_loc, uint16_t pullsize_loc,uint16_t pushsiz
 	{
 		//*高地址字节在前
 		dblocptr->headinfo.loc_pushIndex = dblocptr->temppush.loc_pushIndex;
-		dblocptr->headinfo.loc_pullIndex = dblocptr->temppush.loc_pushIndex;
+		dblocptr->headinfo.loc_pullIndex = dblocptr->temppush.loc_pullIndex;
 		dblocptr->headinfo.loc_pushSize =  dblocptr->temppush.loc_pushSize;
 		dblocptr->headinfo.loc_pullSize =  dblocptr->temppush.loc_pullSize;
 	}
@@ -51,74 +53,152 @@ void Database_init(uint16_t pushsize_loc, uint16_t pullsize_loc,uint16_t pushsiz
 	
 	
 	
-	Flash_ReadBytes((uint16_t*)&(dbeveptr->temppush),EveDbHeadStart,4);//读取loc头部是否发生写入
-	if(dbeveptr->temppush.eve_pushIndex == 0xFFFF && dbeveptr->temppush.eve_pullIndex ==0xFFFF)//未写入
-	{
-		dbeveptr->headinfo.eve_pushIndex = 0;
-		dbeveptr->headinfo.eve_pullIndex = 0;
-		dbeveptr->headinfo.eve_pushSize = pushsize_loc;
-		dbeveptr->headinfo.eve_pullSize = pullsize_loc;
-		Flash_WriteBytes((uint16_t*)&(dbeveptr->headinfo),EveDbHeadStart,4);
-	}
-	else
-	{
-		//*高地址字节在前
-		dbeveptr->headinfo.eve_pushIndex = dbeveptr->temppush.eve_pushIndex;
-		dbeveptr->headinfo.eve_pullIndex = dbeveptr->temppush.eve_pullIndex;
-		dbeveptr->headinfo.eve_pushSize =  dbeveptr->temppush.eve_pushSize;
-		dbeveptr->headinfo.eve_pullSize =  dbeveptr->temppush.eve_pullSize;
-	}
+//	Flash_ReadBytes((uint16_t*)&(dbeveptr->temppush),EveDbHeadStart,4);//读取loc头部是否发生写入
+//	if(dbeveptr->temppush.eve_pushIndex == 0xFFFF && dbeveptr->temppush.eve_pullIndex ==0xFFFF)//未写入
+//	{
+//		dbeveptr->headinfo.eve_pushIndex = 0;
+//		dbeveptr->headinfo.eve_pullIndex = 0;
+//		dbeveptr->headinfo.eve_pushSize = pushsize_loc;
+//		dbeveptr->headinfo.eve_pullSize = pullsize_loc;
+//		Flash_WriteBytes((uint16_t*)&(dbeveptr->headinfo),EveDbHeadStart,4);
+//	}
+//	else
+//	{
+//		//*高地址字节在前
+//		dbeveptr->headinfo.eve_pushIndex = dbeveptr->temppush.eve_pushIndex;
+//		dbeveptr->headinfo.eve_pullIndex = dbeveptr->temppush.eve_pullIndex;
+//		dbeveptr->headinfo.eve_pushSize =  dbeveptr->temppush.eve_pushSize;
+//		dbeveptr->headinfo.eve_pullSize =  dbeveptr->temppush.eve_pullSize;
+//	}
 
 }
 
+bool Overwrite_loc = false;
 HAL_StatusTypeDef PushSta;
 //***************定位信息入库
+
+//*20min最少一条
+//*大于10km每5min一条
 void Database_Push(uint8_t object)
 {
 	if(object==0)//位置信息写入
 	{
-		if(dblocptr->temppush.loc_pushIndex!=0)
+#if timingPush==1
+		if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>0)//速度大于10km/h入库(100)
+#else
+		if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>10)//速度大于10km/h入库
+#endif
 		{
-			if((dblocptr->location.latitude-dblocptr->temppush.latitude >15) || (dblocptr->location.longitude-dblocptr->temppush.longitude >15))//乘以倍数后,差距大于15
+			Flash_ReadBytes((uint16_t*)&(dblocptr->temppush.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pushIndex-1)*34),17);//读取body信息
+			if(dblocptr->temppush.alarmFlagH==0xFFFF)
 			{
-				PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlag),LocDbBodyStart + (dblocptr->headinfo.loc_pushIndex*34),17);
+				dblocptr->temppush.alarmFlagH=0;
+				dblocptr->temppush.alarmFlagL=0;
+				dblocptr->temppush.statusFlagH=0;		//状态标志
+				dblocptr->temppush.statusFlagL=0;		//状态标志
+				dblocptr->temppush.latitudeH=0;		//纬度
+				dblocptr->temppush.latitudeL=0;		//纬度
+				dblocptr->temppush.longitudeH=0;		//经度
+				dblocptr->temppush.longitudeL=0;		//经度
+				dblocptr->temppush.height=0;		//高度
+				dblocptr->temppush.speed=0;			//速度
+				dblocptr->temppush.direction=0;		//方向
+				dblocptr->temppush.timeBCD[0]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[1]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[2]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[3]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[4]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[5]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.signalCmd=0;		//信号关键字
+				dblocptr->temppush.signalCmd_len=0;	//信号关键字长度
+				dblocptr->temppush.CSQ=0;			//信号强度
+				dblocptr->temppush.atellitesCmd=0;	//卫星关键字
+				dblocptr->temppush.atellitesCmd_len=0;//卫星关键字长度
+				dblocptr->temppush.satellitesNum=0;	//卫星数量
+			}
+			else
+			{
+				PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart + (dblocptr->headinfo.loc_pushIndex*34),17);
 				TestPrintStruct(dblocptr,1,0);//读取Temp
 				dblocptr->headinfo.loc_pushIndex+=1;
-				Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
+				dblocptr->headinfo.loc_Conter+=1;
+				Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//更新刻度
+
+			}
+
+		}
+		else if(timecount==4)//20min最少一条
+		{
+			timecount=0;
+			Flash_ReadBytes((uint16_t*)&(dblocptr->temppush.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pushIndex-1)*34),17);//读取body信息
+			if(dblocptr->temppush.alarmFlagH==0xFFFF)
+			{
+				dblocptr->temppush.alarmFlagH=0;
+				dblocptr->temppush.alarmFlagL=0;
+				dblocptr->temppush.statusFlagH=0;		//状态标志
+				dblocptr->temppush.statusFlagL=0;		//状态标志
+				dblocptr->temppush.latitudeH=0;		//纬度
+				dblocptr->temppush.latitudeL=0;		//纬度
+				dblocptr->temppush.longitudeH=0;		//经度
+				dblocptr->temppush.longitudeL=0;		//经度
+				dblocptr->temppush.height=0;		//高度
+				dblocptr->temppush.speed=0;			//速度
+				dblocptr->temppush.direction=0;		//方向
+				dblocptr->temppush.timeBCD[0]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[1]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[2]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[3]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[4]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.timeBCD[5]=0;		//时间戳(世纪秒)BCD
+				dblocptr->temppush.signalCmd=0;		//信号关键字
+				dblocptr->temppush.signalCmd_len=0;	//信号关键字长度
+				dblocptr->temppush.CSQ=0;			//信号强度
+				dblocptr->temppush.atellitesCmd=0;	//卫星关键字
+				dblocptr->temppush.atellitesCmd_len=0;//卫星关键字长度
+				dblocptr->temppush.satellitesNum=0;	//卫星数量
 			}
 			else
 			{
-				printf("经纬度差距过小不进行写入!\r\nlat:%08X/lon:%08X\r\nlat:%08X/lon:%08XN\r\n",dblocptr->temppush.latitude,dblocptr->temppush.longitude,dblocptr->location.latitude,dblocptr->location.longitude);
+				PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart + (dblocptr->headinfo.loc_pushIndex*34),17);
+				TestPrintStruct(dblocptr,1,0);//读取Temp
+				dblocptr->headinfo.loc_pushIndex+=1;
+				dblocptr->headinfo.loc_Conter+=1;
+				Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//更新刻度
+
 			}
-			Flash_ReadBytes((uint16_t*)&(dblocptr->temppush.alarmFlag),LocDbBodyStart + ((dblocptr->headinfo.loc_pushIndex-1)*34),17);//读取body信息
 		}
 
-		else if(dblocptr->location.latitude!=0 && dblocptr->headinfo.loc_pushIndex==0)//判断定位是否正常工作
+		else if(dblocptr->headinfo.loc_pushIndex==0)//判断是否写入
 		{		
-			PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlag),LocDbBodyStart,17);//34
-			printf("首次写入,->%d\r\n",dblocptr->temppush.loc_pushIndex);
-			dblocptr->headinfo.loc_pushIndex+=1;
-			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
-			Flash_ReadBytes((uint16_t*)&(dblocptr->temppush.loc_pushIndex),LocDbHeadStart,4);//读取loc头部写入信息
+			PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart,17);//34
+			if(PushSta==HAL_OK)
+			{
+				printf("首次写入,->%d\r\n",dblocptr->temppush.loc_pushIndex);
+			}
+			dblocptr->headinfo.loc_pushIndex+=1;	//入库索引
+			dblocptr->headinfo.loc_Conter+=1;		//入库总计数
+			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//向dblocptr->headinfo写入6*2个字节
+			Flash_ReadBytes((uint16_t*)&(dblocptr->temppush.loc_pushIndex),LocDbHeadStart,6);//读取
 		}
 		
 	}
-	if(dblocptr->location.latitude!=0)
+	if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pushSize)//入库达边界值
 	{
-		TestPrintStruct(dblocptr,0,0);//读取Worknow
-		Flash_ReadBytes((uint16_t*)&(dblocptr->temppush.loc_pushIndex),LocDbHeadStart,4);//读取loc头部写入信息
-		if(PushSta==HAL_OK)
-		{
-			printf("写入%d完成,准备写入->%d\r\n",dblocptr->headinfo.loc_pushIndex-1,dblocptr->temppush.loc_pushIndex);
-		}
-	}
-	
-	if(dblocptr->temppush.loc_pushIndex == dblocptr->headinfo.loc_pushSize)//入库结束(返回
-	{
-		printf("@@入库操作,当前索引%d,达边界值返回覆写\r\n",dblocptr->headinfo.loc_pushIndex);
+		Overwrite_loc=true;
 		dblocptr->headinfo.loc_pushIndex=0;
+		printf("@@入库操作,当前索引%d,达边界值返回覆写----%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_Conter);
 		Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
 	}
+//	if(dblocptr->location.latitudeL!=0)
+//	{
+		TestPrintStruct(dblocptr,0,0);//读取Worknow
+		Flash_ReadBytes((uint16_t*)&(dblocptr->temppush.loc_pushIndex),LocDbHeadStart,4);//读取loc头部写入信息
+//		if(PushSta==HAL_OK)
+//		{
+			printf("写入%d完成,准备写入->%d\r\n",dblocptr->headinfo.loc_pushIndex-1,dblocptr->temppush.loc_pushIndex);
+//		}
+//	}
+	///*越界处理
 	
 }
 
@@ -126,39 +206,69 @@ void Database_Pull(uint8_t object)
 {
 	if(object==0)//位置信息出库
 	{
-		Flash_ReadBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//读取loc头部写入信息
-		printf("@@出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
-		
+		Flash_ReadBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,6);//读取loc头部写入信息
+
 		if(dblocptr->headinfo.loc_pushIndex != dblocptr->headinfo.loc_pullIndex)//库内有数据
 		{
-			Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlag),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
-			TestPrintStruct(dblocptr,2,1);//读取pullTemp
-			dblocptr->headinfo.loc_pullIndex+=1;
-			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
-			Retrans = true;
+			if(Overwrite_loc)
+			{
+				if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pushSize)
+				{
+					dblocptr->headinfo.loc_pullIndex=0;
+				}
+				else
+				{
+					dblocptr->headinfo.loc_pullIndex = dblocptr->headinfo.loc_pushIndex+1;
+					printf("@@出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
+					Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
+					//TestPrintStruct(dblocptr,2,1);//读取pullTemp
+					//dblocptr->headinfo.loc_pullIndex+=1;
+					Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
+				}
+				if(dblocptr->headinfo.loc_pullIndex < dblocptr->headinfo.loc_pushIndex)
+				{
+					printf("@@出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
+					Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
+					//TestPrintStruct(dblocptr,2,1);//读取pullTemp
+					dblocptr->headinfo.loc_pullIndex+=1;
+					Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
+				}
+			}
+			else
+			{
+				printf("@@出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
+				Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
+				//TestPrintStruct(dblocptr,2,1);//读取pullTemp
+				dblocptr->headinfo.loc_pullIndex+=1;
+				Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
+			}
 		}
 		else
 		{
+			printf("@@出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
 			dblocptr->headinfo.loc_pushIndex=0;
 			dblocptr->headinfo.loc_pullIndex=0;
 			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
 			printf("@@出库完成,库内数据更新\r\n");
-			Retrans = false;
+			Online=false;
 		}
 	}
 }
 
 
-
 void TestPrintStruct(DatabaseLoc *ptr,uint8_t temppush,uint8_t temppull)
 {
 	if(temppush==1)
 	{
-		printf("temp:%08X%08X%08X%08X%04X%04X%04X%d%d%d%d%d%d%02X%02X%02X%02X%02X%02X\r\n", \
-		ptr->temppush.alarmFlag, \
-		ptr->temppush.statusFlag, \
-		ptr->temppush.latitude, \
-		ptr->temppush.longitude, \
+		printf("temp:%04X%04X%04X%04X%04X%04X%04X%04X%04X%04X%04X%d%d%d%d%d%d%02X%02X%02X%02X%02X%02X\r\n", \
+		ptr->temppush.alarmFlagH, \
+		ptr->temppush.alarmFlagL, \
+		ptr->temppush.statusFlagH, \
+		ptr->temppush.statusFlagL, \
+		ptr->temppush.latitudeH, \
+		ptr->temppush.latitudeL, \
+		ptr->temppush.longitudeH, \
+		ptr->temppush.longitudeL, \
 		ptr->temppush.height, \
 		ptr->temppush.speed, \
 		ptr->temppush.direction, \
@@ -177,11 +287,15 @@ void TestPrintStruct(DatabaseLoc *ptr,uint8_t temppush,uint8_t temppull)
 	}
 	else if(temppush==0)
 	{
-		printf("now :%08X%08X%08X%08X%04X%04X%04X%d%d%d%d%d%d%02X%02X%02X%02X%02X%02X\r\n", \
-		ptr->location.alarmFlag, \
-		ptr->location.statusFlag, \
-		ptr->location.latitude, \
-		ptr->location.longitude, \
+		printf("now:%04X%04X%04X%04X%04X%04X%04X%04X%04X%04X%04X%d%d%d%d%d%d%02X%02X%02X%02X%02X%02X\r\n", \
+		ptr->location.alarmFlagH, \
+		ptr->location.alarmFlagL, \
+		ptr->location.statusFlagH, \
+		ptr->location.statusFlagL, \
+		ptr->location.latitudeH, \
+		ptr->location.latitudeL, \
+		ptr->location.longitudeH, \
+		ptr->location.longitudeL, \
 		ptr->location.height, \
 		ptr->location.speed, \
 		ptr->location.direction, \
@@ -200,11 +314,15 @@ void TestPrintStruct(DatabaseLoc *ptr,uint8_t temppush,uint8_t temppull)
 	}
 	else if(temppull==1)
 	{
-		printf("temp:%08X%08X%08X%08X%04X%04X%04X%d%d%d%d%d%d%02X%02X%02X%02X%02X%02X\r\n", \
-		ptr->temppull.alarmFlag, \
-		ptr->temppull.statusFlag, \
-		ptr->temppull.latitude, \
-		ptr->temppull.longitude, \
+		printf("ptem:%04X%04X%04X%04X%04X%04X%04X%04X%04X%04X%04X%d%d%d%d%d%d%02X%02X%02X%02X%02X%02X\r\n", \
+		ptr->temppull.alarmFlagH, \
+		ptr->temppull.alarmFlagL, \
+		ptr->temppull.statusFlagH, \
+		ptr->temppull.statusFlagL, \
+		ptr->temppull.latitudeH, \
+		ptr->temppull.latitudeL, \
+		ptr->temppull.longitudeH, \
+		ptr->temppull.longitudeL, \
 		ptr->temppull.height, \
 		ptr->temppull.speed, \
 		ptr->temppull.direction, \
@@ -223,5 +341,30 @@ void TestPrintStruct(DatabaseLoc *ptr,uint8_t temppush,uint8_t temppull)
 	}
 
 }
+uint16_t timecountSec=0;
+uint16_t timecountMin=0;
+uint16_t timecount=0;
+
+void PushpullWork(void)
+{
+
+#if timingPush==1
+	//if(Offline && timecountMin==5)//5min入库一个信息
+	if(Offline && timecountMin==1)//1min入库一个信息
+#else
+	if(Offline)//入库	
+#endif
+	{
+		timecountMin=0;//5min清0
+		Database_Push(0);//0:Loc信息
+
+	}
+	else if(!Offline && Online)
+	{
+		Database_Pull(0);
+		tt808FsFunc((uint8_t*)&(dblocptr->temppull.alarmFlagH), 39, MessageID_Retrans);
+	}
+}
+
 
 

+ 29 - 16
Core/Src/freertos.c

@@ -56,7 +56,7 @@ extern TipsFlag tipsflag;
 
 /* Private variables ---------------------------------------------------------*/
 /* USER CODE BEGIN Variables */
-
+uint8_t nomalCount = 0;
 /* USER CODE END Variables */
 osThreadId ScanKeyTaskHandle;
 osThreadId BT4GTaskHandle;
@@ -162,7 +162,7 @@ void StartScanKeyTask(void const * argument)
     OLED_Refresh(); 				//刷新界面
 	ReU5Proces();
 	  
-	  
+	Test485Re();//模拟入口
 	  
 	  
 	
@@ -182,8 +182,6 @@ void StartScanKeyTask(void const * argument)
 		refresh=true;
 	 }
 
-
-	 
 	 
   }
   /* USER CODE END StartScanKeyTask */
@@ -205,11 +203,12 @@ void StarBT4GTask(void const * argument)
   {
     osDelay(1);	
 	{
+
 		//Printf_u4u5logbyU1();			//打印log0
 		ReMIPURC();						//各式接收处理1
 		ReU4Proces();					//2
-		MIPURCHandle();					//平台接收处理(鉴权应答等)3
-		
+		MIPURCHandle();					//平台接收处理(鉴权应答等)3 
+
 	}
 
   }
@@ -230,12 +229,9 @@ void StartTestTask(void const * argument)
   /* Infinite loop */
   for(;;)
   {
-    osDelay(1);    
+    osDelay(1);  
 	RESET_4G_MODULE();				//4G启动(复位) 标志位->reset4Gmodule
 	Pre_processing_4G();			//4G传递准备   标志位->module4G_F
-	pushpullWork();
-	  
-	
 
   }
   /* USER CODE END StartTestTask */
@@ -254,20 +250,37 @@ void StartloginfoTaskTask(void const * argument)
   /* Infinite loop */
   for(;;)
   {
-    osDelay(8000);
+    osDelay(10000);//10S更新一次信息
 #if openUpload == 1
 	if(MgnssFlag)
 	{	
 		USART_SendString(&huart4, "AT+CSQ\r\n");
-		HAL_Delay(100);
 		USART_SendString(&huart4, "AT+MGNSSLOC\r\n");
+		
+		PushpullWork();
 	}
-    osDelay(1900);	
-
+#endif
+	
 	
-	Regular_reporting_Loc();//30s 上报地址  10s 入库(掉线)
+	nomalCount=1;
+	if(nomalCount==3)
+	{
+		nomalCount=0;
+		if(uploaweork)
+		{
+			tt808FsFunc((uint8_t*)&(dblocptr->location.alarmFlagH), 34, MessageID_location);
+		}
+	}
+#if timingPush ==1
+	timecountSec+=1;
+	if(timecountSec==5)//1min
+	{
+		timecountSec=0;//清0
+		timecountMin+=1;//加1min
+		timecount +=1; //记4为20min
+	}
+
 #endif
-		
   }
   /* USER CODE END StartloginfoTaskTask */
 }

+ 1 - 1
Core/Src/main.c

@@ -124,7 +124,7 @@ int main(void)
   __HAL_UART_ENABLE_IT(&huart5, UART_IT_RXNE);//¿ªÆôBT½ÓÊÕÖжÏ
 
   START_PROCESS();
-  Database_init(0x760,0x760,0x5,0x5);
+  Database_init(0x5,0x5,0x5,0x5);//760
   
   MBA32A_Init();
   reset4Gmodule = true;

+ 20 - 10
Core/Src/ml307a.c

@@ -42,9 +42,21 @@ void TcpConn(char *value, uint8_t cid, char *IPaddr, uint16_t port, uint8_t tcpC
 	ptr += sprintf(ptr, "AT+MIPOPEN=%d,\"TCP\",\"%s\",%d,60,%d\r\n",cid,IPaddr,port,tcpConnmode);
 }
 
-
+uint16_t phonenum[3];
+bool phonenull=false;
 void ML307A_Init(void)
 {
+	//*phoneNumADDR
+	Flash_ReadBytes(phonenum, phoneNumADDR, 3);//读取phonenum
+	if(phonenum[0]==0xFFFF)
+	{
+		phonenull=true;
+	}
+	else
+	{
+		//
+	}
+
 	printf("\t###02\t4G_init...%d\r\n",resetcount_4g); 
 	sendCmd_4G("AT+MGNSS=0\r\n", "OK", 1, 1);//关闭MGNSS
 	switch(step4g)
@@ -97,6 +109,8 @@ void ML307A_Init(void)
 		}	
 		case 3:
 		{
+			
+#if open4G == 1
 			if(sendCmd_4G("AT+MIPCLOSE=1\r\n", "+MIPSEND:", 1, 1))//断开所有平台
 			{
 				printf("#断开连接\r\n");
@@ -105,13 +119,11 @@ void ML307A_Init(void)
 			char TCPconnvalue[100];
 			TcpConn(TCPconnvalue, 1, JLPTIP, JLPTPORT,0);		//cid=1		tcpConnmode=0 普通模式
 			if(sendCmd_4G(TCPconnvalue, "+MIPOPEN: 1,0", 1, 1))	//TCP连接 0普通模式  2缓存模式  1透传模式
+#endif
 			{
 				step4g++;
-				printf("#TCP连接完成\r\n");
-//				if(sendCmd_4G("AT+MDIALUPCFG=\"auto\",1\r\n", "OK", 1, 5)) 
-//				{
-//					printf("#开启自动拨号\r\n");
-//				}
+				//printf("#TCP连接完成\r\n");
+
 			}
 			//break;
 		}
@@ -131,10 +143,6 @@ void ML307A_Init(void)
 						if(sendCmd_4G("AT+MGNSS=1\r\n", "OK", 1, 1))
 						{
 							printf("#开启MGNSS\r\n");
-//							if(sendCmd_4G("AT+MUECONFIG=\"autoconn\",1\r\n", "OK", 1, 5)) 
-//							{
-//								printf("#开启自动联网\r\n");
-//							}
 							 
 							MgnssFlag=true;
 						}
@@ -285,7 +293,9 @@ void Pre_processing_4G(void)//
 	if(module4G_F)	//4G启动位
 	{
 		module4G_F=false;		//鉴权操作
+#if open4G ==1
 		tt808FsFunc(ICCID,22,MessageID_authentication);
+#endif
 	} 
 }
 

+ 240 - 165
Core/Src/tt808.c

@@ -19,6 +19,10 @@ uint8_t MIPurcXXTCSJ[100];//平台
 uint8_t speedBegin=0;
 uint8_t speedEnd=0;
 uint8_t speed[10];		//处理头部
+
+uint8_t DTUurc[100];	//接收平台数据
+uint8_t DTUurc1[15];	//接收平台数据
+
 int pushpullcount = 0;
 double dSpeed=0;
 double dlatitude=0;
@@ -44,37 +48,63 @@ bool GnssFlag = false;
 bool Offline = false;
 bool Retrans = false;
 bool Online = false;
+bool reIME = false;
 /**
 				时间     纬度(北纬)   经度(东经)  水平精度因子  海拔高度    定位类型(1无,2 2d,3 3d) 运动角度    水平运动速度(KM/h)    水平运动速度(Knots)	日月年	卫星数量	差分定位标识(1单点,2差分)
 eg.+MGNSSLOC: 015032.301,3014.8605N,12001.9250E,1.8,			17.6,		3,                      0.00,		3.6,			      1.9,					080424,	12,			1	 
 */
+
+void reconn(void)
+{
+		char TCPconnvalue[120];
+		TcpConn(TCPconnvalue, 1, JLPTIP, JLPTPORT,0);		//cid=1		tcpConnmode=0 普通模式
+		if(sendCmd_4G(TCPconnvalue, "+MIPOPEN: 1,0", 1, 1))	//TCP连接 0普通模式  2缓存模式  1透传模式
+		{
+			printf("重连成功\r\n");
+		}
+}
 uint8_t Messagetemp_length=0;
 uint8_t MessageHandleData[100];	//放入封装后数据
 uint8_t tcppacket[100]; //消息数据
 void MessageHandle(uint16_t MessageID)
 {
 
-	uint16_t MessageAttributeData = Messagetemp_length;
-	if(MessageID ==MessageID_Retrans)
+	Flash_ReadBytes((uint16_t*)&(tt808.LSH),tt808serialNum,1);//读取loc头部是否发生写入
+	if(tt808.LSH==0xFFFF)
 	{
-		MessageAttributeData+=3;
+		tt808.LSH=0;//初始未写入
 	}
+	uint16_t MessageAttributeData = Messagetemp_length;
+
 	MessageAttributeData |= ( Messagetemp_length | (TCPJMFSNULL<<10)); // 将长度左移3位后和加密方式进行按位或操作(001 RSA ,000 无加密)
 	
 	header[0] 	= ((MessageID>>8)&0xff);
 	header[1] 	= (MessageID&0xff);				//消息ID
 	header[2] 	= ((MessageAttributeData>>8)&0xff);
 	header[3] 	= (MessageAttributeData&0xff);			//消息属性
-	header[4] 	= 0x00;
-	header[5] 	= 0x00;
-	header[6] 	= 0x16;
-	header[7] 	= 0x00;
-	header[8] 	= 0x00;
-	header[9] 	= 0x08;						//“手机号”
-	header[10] 	=  ((tt808.LSH>>8)&0xff);;
-	header[11] 	=  (tt808.LSH&0xff);;
-	
+	//*test	phoneNumxy
+	//*work	phoneNum
+	if(phonenull)
+	{
+		header[4] 	= 0x00;
+		header[5] 	= 0x00;
+		header[6] 	= 0x16;
+		header[7] 	= 0x00;
+		header[8] 	= 0x00;
+		header[9] 	= 0x08;						//“手机号”
+	}
+	else
+	{
+		header[4] 	= (phonenum[0]>>8)&0xff;
+		header[5] 	= (phonenum[0])&0xff;
+		header[6] 	= (phonenum[1]>>8)&0xff;
+		header[7] 	= (phonenum[1])&0xff;
+		header[8] 	= (phonenum[2]>>8)&0xff;
+		header[9] 	= (phonenum[2])&0xff;					//“手机号”
+	}
 
+	header[10] 	=  ((tt808.LSH>>8)&0xff);
+	header[11] 	=  (tt808.LSH&0xff);
 	
 	int index = 0;
 	tcppacket[index++] = TT808FLAG;  // Set the headflag 0x7E
@@ -89,14 +119,14 @@ void MessageHandle(uint16_t MessageID)
 	tcppacket[index++] = xorBytes(&tcppacket[1],12+Messagetemp_length);;  // Set the checksum
 	tcppacket[index++] = TT808FLAG;      // Set the flag at the end
 	
-	
 	for (int i = 0; i < index; i++) {
 		printf("%02X ", tcppacket[i]);  // 以十六进制格式打印每个元素
 	}
+	printf("\r\n");
 	
 	
-	printf("\r\n");
-	char TCPvalue[100];
+//#if open4G ==1
+	char TCPvalue[120];
 	char *ptr = TCPvalue;
 	ptr += sprintf(ptr, "AT+MIPSEND=1,%d,\"",index);
 	for (int i = 0; i < index; i++) {
@@ -105,10 +135,13 @@ void MessageHandle(uint16_t MessageID)
 	sprintf(ptr, "\"\r\n");//TCPvalue
 	if(sendCmd_4G(TCPvalue, "+MIPSEND:", 1, 1))//发送
 	{
-		printf("#发送完成\r\n");
+		printf("#等待回应\r\n");
 	}
+//#endif
+	
 	
 	tt808.LSH+=1;//需做写入处理
+	Flash_WriteBytes((uint16_t*)&(tt808.LSH),tt808serialNum,1);
 }
 uint16_t swapBytes16(uint16_t value) {
     return (value >> 8) | (value << 8);
@@ -125,9 +158,7 @@ uint8_t Message_bodydata(uint8_t *Message, uint8_t length, uint8_t outMessage[],
 {
 	int index = 0;
 	uint8_t temp_length = 0;//加首尾 25/23/crc
-			
-
-		
+	
 	if(MessageID==MessageID_authentication  || MessageID==MessageID_heartbeat)//不加头尾(鉴权、心跳)
 	{
 		temp_length = length;//不加首尾
@@ -151,13 +182,6 @@ uint8_t Message_bodydata(uint8_t *Message, uint8_t length, uint8_t outMessage[],
 		//状态标志/纬度/经度/速度
 
 		uint8_t temp_Message[temp_length];
-		
-
-		dblocptr->location.statusFlag = swapBytes32(dblocptr->location.statusFlag);
-		dblocptr->location.latitude = swapBytes32(dblocptr->location.latitude);
-		dblocptr->location.longitude = swapBytes32(dblocptr->location.longitude);
-		dblocptr->location.speed = swapBytes16(dblocptr->location.speed);
-		
 		for (int i = 0; i < length; i++) {
 			temp_Message[index++] = Message[i];  // 将消息头拷贝到报文中
 		}
@@ -171,12 +195,6 @@ uint8_t Message_bodydata(uint8_t *Message, uint8_t length, uint8_t outMessage[],
 	else if(MessageID==MessageID_Retrans)// 补传0704+5
 	{
 		temp_length = length;//不加首尾
-		//状态标志/纬度/经度/速度
-		dblocptr->temppull.statusFlag = swapBytes32(dblocptr->temppull.statusFlag);
-		dblocptr->temppull.latitude = swapBytes32(dblocptr->temppull.latitude);
-		dblocptr->temppull.longitude = swapBytes32(dblocptr->temppull.longitude);
-		dblocptr->temppull.speed = swapBytes16(dblocptr->temppull.speed);
-		
 		uint8_t temp_Message[temp_length];
 		
 		temp_Message[index++] = 0x00;
@@ -215,11 +233,6 @@ uint8_t Message_bodydata(uint8_t *Message, uint8_t length, uint8_t outMessage[],
 			outMessage[i]=temp_Message[i];
 		}
 	}
-	
-	//test
-//	for (int i = 0; i < temp_length; i++) {
-//		printf("%02X ", temp_Message[i]);  // 以十六进制格式打印每个元素
-//	}
 	return  temp_length;
 }
 
@@ -284,6 +297,34 @@ void extractString(char* receiveStr, char* result, uint8_t start, uint16_t end)
   }
 }
 
+
+void process_string(char** input_strings, char** output_strings, int start_index, int end_index) {
+    char* start_ptr;
+    char* end_ptr;
+    char* input = input_strings[start_index];
+    int count = 0;
+    
+    if (start_index == 4) {
+        start_ptr = strchr(input, ':') + 1; // 寻找第一个冒号,并指向冒号后的字符
+        count = sscanf(start_ptr, "%d", &output_strings[4]);
+    } else {
+        start_ptr = strchr(input, '=') + 1; // 寻找第一个等号,并指向等号后的字符
+        for (int i = 0; i <= end_index; i++) {
+            end_ptr = strchr(start_ptr, '.');  // 寻找下一个点号,并指向点号后的字符
+            if (end_ptr == NULL) {
+                end_ptr = strchr(start_ptr, '\0');  // 如果是最后一个区间,指向字符串末尾
+            }
+            if (end_ptr != NULL) {
+                *end_ptr = '\0';  // 将点号替换为字符串结束符,截断字符串
+                count = sscanf(start_ptr, "%d", &output_strings[i]);
+                start_ptr = end_ptr + 1;  // 移动指针到下一个区间的开头
+            } else {
+                break;
+            }
+        }
+    }
+}
+
 double convertToDouble(char* str) {
 	if(str == csatellitesNum)
 	{
@@ -344,67 +385,107 @@ uint8_t hexToBcd(uint8_t hex) {
     return ((hex / 10) << 4) | (hex % 10);
 }
 // 将整数数组中的所有十六进制数转换为 BCD 码
-void hexArrayToBcd(uint8_t* array, size_t length, uint8_t* out) {
+void hexArrayToBcd(uint8_t* array, size_t length, uint8_t* out) {//时间用
 	array[3]+=8;
     for (size_t i = 0; i < length; i++) {
         out[i] = hexToBcd(array[i]);
     }
 }
+void hexToBcd_arr(uint8_t* array, size_t length, uint8_t* out) {//通用
 
-void ReMIPURC(void)
+    for (size_t i = 0; i < length; i++) {
+        out[i] = hexToBcd(array[i]);
+    }
+}
+char* input_strings[]={0};
+char* reIp0[5];
+char* reIp1[5];
+char* reIp2[5];
+char* reIp3[5];
+char* reIpP[5];
+
+void Test485Re(void)
 {
-	 if(strncmp((char*)U4_4GrecvBuff, "+MIPURC", strlen("+MIPURC"))==0)	//监测平台回复+MIPURC: 
-	 { 
-		uint8_t high_byte = (U4_4GrecvBuff[18]&0x0f) *10; 
-		uint8_t low_byte = U4_4GrecvBuff[19]&0x0f; 
-		hccd = high_byte + low_byte;
-		memcpy(MIPurc1,&U4_4GrecvBuff[21],hccd*2);
-		const char *hex = (const char *)MIPurc1;  // 将 uint8_t * 转换为 const char *
+	//*test485 模拟
+	 if(strncmp((char*)U1_485recvBuff, "+MIPURC: \"disconn\",1,1",  strlen("+MIPURC: \"disconn\",1,1"))==0)//"disconn" 平台断连
+	 {
+		 Offline=true;
+		 uploaweork=false;
+		 printf("@U1与平台断开连接\r\n");
+		 memset(U1_485recvBuff,0,BUFFER_SIZE);
+	 }	
+	 else if(strncmp((char*)U1_485recvBuff, "+MIPOPEN: 1,0",  strlen("+MIPOPEN: 1,0"))==0)//连接平台
+	 {
+		 Offline=false;
+		 Online = true;
+		 uploaweork=true;
+		 printf("@U1设备已上线!!\r\n");
+		 refresh=true;
+		 memset(U1_485recvBuff,0,BUFFER_SIZE);
+	 }	
+
+	 else if(strncmp((char*)&U1_485recvBuff, "DTU+FLASH=deleteloc",  strlen("DTU+FLASH=deleteloc"))==0)//连接平台
+	 {
+			dblocptr->headinfo.loc_pushIndex=0;
+			dblocptr->headinfo.loc_pullIndex=0;
+			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,4);//更新刻度
+			memset(U1_485recvBuff,0,BUFFER_SIZE);
+			printf("更新定位刻度\r\n");
+	 }	
+	 else if(strncmp((char*)U1_485recvBuff, "DTU+IME",  strlen("DTU+IME"))==0)//修改IME号
+	 {
+		memcpy(DTUurc1,&U1_485recvBuff[8],12);
+		
+		const char *hex = (const char *)DTUurc1;  // 将 uint8_t * 转换为 const char *
 		int size = strlen(hex) / 2;  // 计算二进制数据的长度
 		unsigned char *bin = (unsigned char *)malloc(size);  // 分配足够的内存用于存储二进制数据
 		rlt = hex2bin(bin, hex);  // 调用hex2bin函数进行转换
-		memcpy(MIPurc, bin, rlt);  // 将 bin 中的 rlt 个字节复制到 MIPurc1 中						接收到的数据放入MIPurc1中
+		memcpy(DTUurc, bin, rlt);  // 将 bin 中的 rlt 个字节复制到 MIPurc1 中						接收到的数据放入MIPurc1中
 		free(bin);  // 释放内存  
 		 
-		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-		memset(MIPurc1,0,100);
-		 
+		//memset(DTUurc1,0,100);
+		memset(U1_485recvBuff,0,BUFFER_SIZE);
+		reIME = true;
 	 }
+	 else if(strncmp((char*)U1_485recvBuff, "DTU+IP",  strlen("DTU+IP"))==0)
+	 {
+		printf("更换IP\r\n");
+		memcpy(input_strings,U1_485recvBuff+7,20);
+//		process_string(input_strings,reIp0,0,1);//获取192
+//		process_string(input_strings,reIp1,1,2);//获取168
+//		process_string(input_strings,reIp2,2,3);//获取1
+//		process_string(input_strings,reIp3,3,4);//获取2
+//		process_string(input_strings,reIpP,4,5);//获取port
+		memset(U1_485recvBuff,0,BUFFER_SIZE);
+	 }
+}
+void ReMIPURC(void)
+{
+//*工作
+
+//*设备上线,发送成功
+	 if(strncmp((char*)U4_4GrecvBuff, "+MIPOPEN: 1,0",  strlen("+MIPOPEN: 1,0"))==0)//连接平台
+	 {
+//		 Offline=false;	//待判定假消息
+//		 Online = true;	//待判定假消息
+//		 uploaweork=true;
+		 printf("@TCP连接成功!!\r\n");
+		 memset(U4_4GrecvBuff,0,BUFFER_SIZE);
+	 }	 
+///*定位信息(MGNSS)
 	 else if(strncmp((char*)U4_4GrecvBuff, "+MGNSSURC: \"state\",1",  strlen("+MGNSSURC: \"state\",1"))==0)
 	 {
 		 printf("@MGNSS设置成功\r\n");
 		
 		 memset(U4_4GrecvBuff,0,strlen("+MGNSSURC: \"state\",1"));
 	 }
-	 
 	 else if(strncmp((char*)U4_4GrecvBuff, "+MGNSSURC: \"state\",0",  strlen("+MGNSSURC: \"state\",0"))==0)//断开平台
 	 {
 		 printf("@主动取消GNSS\r\n");
 		 memset(U4_4GrecvBuff,0,strlen("+MGNSSURC: \"state\",0"));
 	 }	 
-	 
-	 else if(strncmp((char*)U4_4GrecvBuff, "+MIPURC: \"di",  strlen("+MIPURC: \"di"))==0)//"disconn" 平台断连
-	 {
-		 Offline=true;
-		 printf("@与平台断开连接\r\n");
-		 //ML307AReset();//与平台断开连接 offline
-		 memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-	 }
-	 //*连接成功 Offline=false;
-	 
-	 else if(strncmp((char*)U4_4GrecvBuff, "+MIPOPEN: 1,0",  strlen("+MIPOPEN: 1,0"))==0)//连接平台
-	 {
-		 Offline=false;
-		 Online = true;
-		 printf("@设备已上线!!\r\n");
-		 module4G_F = true;
-		 menu.current = 0xBB;
-		 tipsflag = Back;
-		 refresh=true;
-		 memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-	 }	 
-	 
 
+///*定位信息(基站)
 	 else if(((strncmp((char*)U4_4GrecvBuff, "+MGNSSLOC", strlen("+MGNSSLOC"))==0) || (strncmp((char*)U4_4GrecvBuff, "OK", strlen("OK"))==0)) && MgnssFlag)	//监测平台回复+MGNSSLOC OK4f4b
 	 {
 
@@ -412,6 +493,16 @@ void ReMIPURC(void)
 		GnssFlag=true;
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
 	 }
+///*掉线
+#if open4G ==1
+	 else if(strncmp((char*)U4_4GrecvBuff, "+MIPURC: \"disconn\",1,1",  strlen("+MIPURC: \"disconn\",1,1"))==0)//"disconn" 平台断连
+	 {
+		 Offline=true;
+		 printf("@未发送成功,平台断开连接\r\n");
+		 memset(U4_4GrecvBuff,0,BUFFER_SIZE);
+		 uploaweork = false;
+		 reconn();//重连
+	 }
 	 else if((strncmp((char*)U4_4GrecvBuff, "+CPIN: SIM REMOVED", strlen("+CPIN: SIM REMOVED"))==0) || (strncmp((char*)U4_4GrecvBuff, "+CME ERROR: 10", strlen("+CME ERROR: 10"))==0) )//无SIM
 	 {
 		//TODO
@@ -422,36 +513,44 @@ void ReMIPURC(void)
 		tipsflag = NoSIM;
 		refresh=true;
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
+		 uploaweork = false;
+		 reconn();//重连
 	 }
 	 
-	 else if((strncmp((char*)U4_4GrecvBuff, "+MIPCALL: 1,0", strlen("+MIPCALL: 1,0"))==0) || (strncmp((char*)U4_4GrecvBuff, "+CME ERROR: 550", strlen("+CME ERROR: 550"))==0))//意外断开平台连接!!!!//TCP未知错误
+	 else if((strncmp((char*)U4_4GrecvBuff, "+MIPCALL: 1,0", strlen("+MIPCALL: 1,0"))==0))//意外断开平台连接!!!!//TCP未知错误
 	 {
 		//TODO
 		Offline=true;
 		signal = false;
 		printf("@与平台断开连接\r\n");
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
+		 uploaweork = false;
+		 reconn();//重连
+		 
+	 }
+	 else if( (strncmp((char*)U4_4GrecvBuff, "+CME ERROR: 550", strlen("+CME ERROR: 550"))==0))
+	 {
+		Offline=true;
+		signal = false;
+		printf("@未发送成功->TCP/IP未知错误\r\n");
+		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
+		 uploaweork = false;
+		 reconn();//重连
+		 
+		 
+		 
 		 
 	 }
-	 
 	 else if((strncmp((char*)U4_4GrecvBuff, "+MIPOPEN: 1,571", strlen("+MIPOPEN: 1,571"))==0))//PDP激活失败
 	 {
 		//TODO
 		Offline=true;
-		printf("@PDP激活失败\r\n");
+		printf("@未发送成功,PDP激活失败\r\n");
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-		 
+		 uploaweork = false;
+		 reconn();//重连
 	 }
-	 
-	 
-	 
-//	else if(strncmp((char*)U4_4GrecvBuff+1, "CSQ", strlen("CSQ")))//CSQ 信号
-//	{
-//		memcpy(CSQ,U4_4GrecvBuff,U4_4GrecvLength);
-//		dblocptr->location.CSQ = (uint8_t)(CSQ[6]&0xf*10)+(CSQ[7]&0xf);
-//		memset(CSQ,0,12);
-//		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-//	}
+#endif
 	 else if(U4_4GrecvBuff[1]== 0x43 && U4_4GrecvBuff[2]== 0x53 && U4_4GrecvBuff[3]== 0x51)//CSQ 信号
 	 {
 		memcpy(CSQ,U4_4GrecvBuff,U4_4GrecvLength);
@@ -459,10 +558,28 @@ void ReMIPURC(void)
 		memset(CSQ,0,12);
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
 	 }
+	 else if(strncmp((char*)U4_4GrecvBuff, "+MIPURC", strlen("+MIPURC"))==0)	//监测平台回复+MIPURC: 
+	 { 
+		uint8_t high_byte = (U4_4GrecvBuff[18]&0x0f) *10; 
+		uint8_t low_byte = U4_4GrecvBuff[19]&0x0f; 
+		hccd = high_byte + low_byte;
+		memcpy(MIPurc1,&U4_4GrecvBuff[21],hccd*2);
+		const char *hex = (const char *)MIPurc1;  // 将 uint8_t * 转换为 const char *
+		int size = strlen(hex) / 2;  // 计算二进制数据的长度
+		unsigned char *bin = (unsigned char *)malloc(size);  // 分配足够的内存用于存储二进制数据
+		rlt = hex2bin(bin, hex);  // 调用hex2bin函数进行转换
+		memcpy(MIPurc, bin, rlt);  // 将 bin 中的 rlt 个字节复制到 MIPurc1 中						接收到的数据放入MIPurc1中
+		free(bin);  // 释放内存  
+		 
+		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
+		memset(MIPurc1,0,100);
+		 
+	 }
  }
 
 void MIPURCHandle(void)
 {
+#if open4G == 1
 	 if(MIPurc[0]==0x7E)
 	 {
 		 uint16_t PTXXID = MIPurc[1]<<8 | MIPurc[2];		//消息ID
@@ -471,8 +588,7 @@ void MIPURCHandle(void)
 		 uint8_t YESorNO = MIPurc[17];						//00 success ; 01 fail
 		 
 		 if(PTXXID==XXID_pttyyd)			//收到平台通用应答0x8001
-		 {
-			 			 
+		 { 
 			if(xxRE == MessageID_authentication)//回复鉴权ID
 			{
 				if(YESorNO==YES)
@@ -510,20 +626,16 @@ void MIPURCHandle(void)
 					printf("@地址应答no\r\n");
 				}
 				memset(MIPurc,0,rlt);//rlt下发长度 
-				
 			}
 		 }
-		 
 		 else if(PTXXID == XXID_ptxxtc)	//收到平台消息透传 8900
 		 {
 			 uint8_t tcsjLen = MIPurc[13];
 			 memcpy(MIPurcXXTCSJ,&MIPurc[13],xxtcLen);
 			 printf("@得到透传数据,%d\r\n",tcsjLen);
 			 memset(MIPurc,0,rlt);//rlt下发长度 
-			 
 		 }
 	 }
-	 
 	 else if(authFlag)
 	 {
 		 authFlag = false;
@@ -531,6 +643,18 @@ void MIPURCHandle(void)
 	 	 uint8_t test[] = {0x05};			//test心跳
 		 tt808FsFunc(test,1,MessageID_heartbeat);		//test心跳
 	 }
+#endif
+	 else if(reIME)
+	 {
+		reIME=false;		 
+		phonenum[0] = DTUurc[0]<<8|DTUurc[1];
+		phonenum[1] = DTUurc[2]<<8|DTUurc[3];
+		phonenum[2] = DTUurc[4]<<8|DTUurc[5];
+		phonenull =false;
+		Flash_WriteBytes(phonenum,phoneNumADDR,3);//更新ime
+		//memset(DTUurc,0,100);
+		printf("IME设置\r\n");
+	 }
 }
 
 
@@ -567,12 +691,19 @@ void ReU4Proces(void)
 		// 调用函数提取字符串
 		extractString(MGNSSLOC, clatitude,1 ,2);//采集
 		dlatitude = convertToDouble(clatitude);	//转换浮点数
-		dblocptr->location.latitude = convertGPS(dlatitude);
+		uint32_t latitudetemp=convertGPS(dlatitude);
+		dblocptr->location.latitudeH = (latitudetemp>>16)&0xFFFF;
+		dblocptr->location.latitudeH = swapBytes16(dblocptr->location.latitudeH);//转换H字节
+		dblocptr->location.latitudeL = (latitudetemp)&0xFFFF;
+		dblocptr->location.latitudeL = swapBytes16(dblocptr->location.latitudeL);//转换L字节
 		
 		extractString(MGNSSLOC, clongitude,2 ,3);//采集
 		dlongitude = convertToDouble(clongitude);	//转换浮点数
-		dblocptr->location.longitude = convertGPS(dlongitude);
-		
+		uint32_t longitudetemp=convertGPS(dlongitude);
+		dblocptr->location.longitudeH = (longitudetemp>>16)&0xFFFF;
+		dblocptr->location.longitudeH = swapBytes16(dblocptr->location.longitudeH);//转换H字节
+		dblocptr->location.longitudeL = (longitudetemp)&0xFFFF;
+		dblocptr->location.longitudeL = swapBytes16(dblocptr->location.longitudeL);//转换L字节
 		
 //		printf("%d\r\n",dblocptr->location.latitude);
 //		printf("%d\r\n",dblocptr->location.longitude);
@@ -586,11 +717,9 @@ void ReU4Proces(void)
 		
 		dblocptr->location.speed  = (uint16_t)dSpeed;
 		
-		
 		if(dSpeed !=0 && dlongitude!=0 && dlatitude!=0) //有数据进行更新!
 		{
-			signal = true;			
-			
+			signal = true;		
 			if(menu.current == 0xBB && tipsflag!= ConnOK)
 			{
 				menu.current = 0;
@@ -611,78 +740,24 @@ void ReU4Proces(void)
 				tipsflag = Nosignal;
 				refresh=true;
 			}
-
 		}
-		
-		
 		memset(MGNSSLOC,0,100);
 
 	}
 }
 
-int countregular = 0;
-void Regular_reporting_Loc(void)
-{
-	countregular+=1;
-	if(countregular==3 && !Offline )//在线状态10s更新状态,30s上传  (各种状态正常在线,直接上传信息)
-	{
-		countregular=0;
-		tt808FsFunc((uint8_t*)&(dblocptr->location.alarmFlag), 34, MessageID_location);
-	}
+//int countregular = 0;
+//void Regular_reporting_Loc(void)
+//{
+//	countregular+=1;
+//	if(countregular==3 && !Offline )//在线状态10s更新状态,30s上传  (各种状态正常在线,直接上传信息)
+//	{
+//		countregular=0;
+//		tt808FsFunc((uint8_t*)&(dblocptr->location.alarmFlagH), 34, MessageID_location);
+//	}
 
-	
-}
+//	
+//}
+//+MIPURC: "disconn",1,1
 
-void pushpullWork(void)
-{
-	pushpullcount++;
-	if(Offline && pushpullcount==10000)//掉线状态10s入库定位记录
-	{
-		
-		RTCtime();//写入做参考
-		printf("@@@设备掉线,执行入库操作!!%d\r\n",dblocptr->temppush.loc_pushIndex);
-		Database_Push(0);
-		
-		//*每10s重连平台
-		char TCPconnvalue[100];
-		TcpConn(TCPconnvalue, 1, JLPTIP, JLPTPORT,0);		//cid=1		tcpConnmode=0 普通模式
-		if(sendCmd_4G(TCPconnvalue, "+MIPOPEN: 1,0", 1, 1))	//TCP连接 0普通模式  2缓存模式  1透传模式
-		{
-			printf("@@@TCP连接完成\r\n");
-		}
-		else
-		{
-			printf("@@@重连失败!\r\n");
-		}
-	}	
-	else if(Retrans && MiddleObj)//重传 7e0704002701820200777700060001000022000000000000000301cd8b7007278acd00000000000023051918174830011e310103b77e
-	{
-		
-		tt808FsFunc((uint8_t*)&(dblocptr->temppull.alarmFlag), 39, MessageID_Retrans);
-		printf("出库%d操作完成,当前索引%d\r\n",dblocptr->headinfo.loc_pullIndex-1,dblocptr->headinfo.loc_pullIndex);
-		MiddleObj = false;
-	}
-	else if(Online && !MiddleObj && pushpullcount==1000) //上线出库
-	{
-		pushpullcount=0;
-		if(dblocptr->headinfo.loc_pushIndex==0)
-		{
-			printf("@@@更新上线标识,库内无数据\r\n");
-			Online = false;
-		}
-		else
-		{
-			RTCtime();//写入做参考
-			printf("@@@库内有数据,执行操作\r\n");
-			Database_Pull(0);
-			MiddleObj=true;
-		}
-		
-	}
-	else if(pushpullcount>10001)
-	{
-		
-		pushpullcount=0;
-	}
-}
 

+ 36 - 39
MDK-ARM/dtu.uvoptx

@@ -153,44 +153,41 @@
         <Ww>
           <count>0</count>
           <WinNumber>1</WinNumber>
-          <ItemText>dblocptr</ItemText>
+          <ItemText>reIp</ItemText>
         </Ww>
         <Ww>
           <count>1</count>
           <WinNumber>1</WinNumber>
-          <ItemText>dbeveptr</ItemText>
+          <ItemText>reIp0</ItemText>
         </Ww>
         <Ww>
           <count>2</count>
           <WinNumber>1</WinNumber>
-          <ItemText>CSQ</ItemText>
+          <ItemText>reIp1</ItemText>
         </Ww>
         <Ww>
           <count>3</count>
           <WinNumber>1</WinNumber>
-          <ItemText>tt808</ItemText>
+          <ItemText>reIp2</ItemText>
         </Ww>
         <Ww>
           <count>4</count>
           <WinNumber>1</WinNumber>
-          <ItemText>year_str</ItemText>
-        </Ww>
-        <Ww>
-          <count>5</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>MIPurcXXTCSJ</ItemText>
+          <ItemText>reIp3</ItemText>
         </Ww>
+      </WatchWindow1>
+      <WatchWindow2>
         <Ww>
-          <count>6</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>U4_4GrecvBuff</ItemText>
+          <count>0</count>
+          <WinNumber>2</WinNumber>
+          <ItemText>\\dtu\../Core/Src/database.c\dblocptr-&gt;temppush</ItemText>
         </Ww>
-      </WatchWindow1>
+      </WatchWindow2>
       <MemoryWindow1>
         <Mm>
           <WinNumber>1</WinNumber>
           <SubType>0</SubType>
-          <ItemText>LocDbBodyStart</ItemText>
+          <ItemText>LocDbHeadStart</ItemText>
           <AccSizeX>0</AccSizeX>
         </Mm>
       </MemoryWindow1>
@@ -198,7 +195,7 @@
         <Mm>
           <WinNumber>2</WinNumber>
           <SubType>0</SubType>
-          <ItemText>LocDbHeadStart</ItemText>
+          <ItemText>LocDbBodyStart</ItemText>
           <AccSizeX>0</AccSizeX>
         </Mm>
       </MemoryWindow2>
@@ -383,6 +380,18 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
+      <PathWithFileName>..\Core\Src\database.c</PathWithFileName>
+      <FilenameWithoutPath>database.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
       <PathWithFileName>../Core/Src/main.c</PathWithFileName>
       <FilenameWithoutPath>main.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
@@ -390,7 +399,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>11</FileNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -402,7 +411,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -414,7 +423,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -426,7 +435,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -438,7 +447,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -450,7 +459,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -462,7 +471,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -474,7 +483,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -486,7 +495,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -498,7 +507,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -510,7 +519,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -520,18 +529,6 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
-    <File>
-      <GroupNumber>2</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Core\Src\database.c</PathWithFileName>
-      <FilenameWithoutPath>database.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
   </Group>
 
   <Group>

+ 5 - 5
MDK-ARM/dtu.uvprojx

@@ -434,6 +434,11 @@
               <FileType>1</FileType>
               <FilePath>..\Core\Src\tt808.c</FilePath>
             </File>
+            <File>
+              <FileName>database.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Core\Src\database.c</FilePath>
+            </File>
             <File>
               <FileName>main.c</FileName>
               <FileType>1</FileType>
@@ -647,11 +652,6 @@
               <FileType>1</FileType>
               <FilePath>../Core/Src/stm32f1xx_hal_timebase_tim.c</FilePath>
             </File>
-            <File>
-              <FileName>database.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Core\Src\database.c</FilePath>
-            </File>
           </Files>
         </Group>
         <Group>

+ 0 - 56
Output/dtu.lnp

@@ -1,56 +0,0 @@
---cpu Cortex-M3
-"..\output\startup_stm32f103xe.o"
-"..\output\interface.o"
-"..\output\key.o"
-"..\output\oled.o"
-"..\output\mba32a.o"
-"..\output\ml307a.o"
-"..\output\dtuaes.o"
-"..\output\keyboard.o"
-"..\output\tt808.o"
-"..\output\main.o"
-"..\output\gpio.o"
-"..\output\freertos.o"
-"..\output\can.o"
-"..\output\dma.o"
-"..\output\rtc.o"
-"..\output\spi.o"
-"..\output\tim.o"
-"..\output\usart.o"
-"..\output\stm32f1xx_it.o"
-"..\output\stm32f1xx_hal_msp.o"
-"..\output\stm32f1xx_hal_timebase_tim.o"
-"..\output\database.o"
-"..\output\stm32f1xx_hal_gpio_ex.o"
-"..\output\stm32f1xx_hal_can.o"
-"..\output\stm32f1xx_hal.o"
-"..\output\stm32f1xx_hal_rcc.o"
-"..\output\stm32f1xx_hal_rcc_ex.o"
-"..\output\stm32f1xx_hal_gpio.o"
-"..\output\stm32f1xx_hal_dma.o"
-"..\output\stm32f1xx_hal_cortex.o"
-"..\output\stm32f1xx_hal_pwr.o"
-"..\output\stm32f1xx_hal_flash.o"
-"..\output\stm32f1xx_hal_flash_ex.o"
-"..\output\stm32f1xx_hal_exti.o"
-"..\output\stm32f1xx_hal_rtc.o"
-"..\output\stm32f1xx_hal_rtc_ex.o"
-"..\output\stm32f1xx_hal_spi.o"
-"..\output\stm32f1xx_hal_tim.o"
-"..\output\stm32f1xx_hal_tim_ex.o"
-"..\output\stm32f1xx_hal_uart.o"
-"..\output\system_stm32f1xx.o"
-"..\output\croutine.o"
-"..\output\event_groups.o"
-"..\output\list.o"
-"..\output\queue.o"
-"..\output\stream_buffer.o"
-"..\output\tasks.o"
-"..\output\timers.o"
-"..\output\cmsis_os.o"
-"..\output\heap_4.o"
-"..\output\port.o"
---library_type=microlib --strict --scatter "..\Output\dtu.sct"
---summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
---info sizes --info totals --info unused --info veneers
---list "..\Output\dtu.map" -o ..\Output\dtu.axf

File diff suppressed because it is too large
+ 0 - 1424
Output/startup_stm32f103xe.lst