Browse Source

消除编译错误

libo 3 years ago
parent
commit
46b0e33aec
22 changed files with 1127 additions and 765 deletions
  1. 2 1
      Inc/DS1302.h
  2. 12 12
      Inc/Dwin.h
  3. 139 139
      Inc/KeySlave485.h
  4. 3 0
      Inc/TerminalSlave485.h
  5. 1 1
      Inc/main.h
  6. 5 2
      Inc/md5c.h
  7. 374 122
      MDK-ARM/TestF7.uvguix.Administrator
  8. 213 179
      MDK-ARM/TestF7.uvoptx
  9. 67 52
      MDK-ARM/TestF7.uvprojx
  10. 24 21
      Src/CollectMaster485.c
  11. 6 6
      Src/DS1302.c
  12. 16 8
      Src/Dwin.c
  13. 12 12
      Src/KeySlave485.c
  14. 3 2
      Src/LTF_sa/leaf_ota.c
  15. 1 0
      Src/LTF_sa/leaf_ota.h
  16. 4 2
      Src/ScreenMaster485.c
  17. 120 101
      Src/TerminalSlave485.c
  18. 82 75
      Src/freertos.c
  19. 22 22
      Src/main.c
  20. 17 7
      Src/md5c.c
  21. 3 0
      Src/stm32f7xx_it.c
  22. 1 1
      Src/usart.c

+ 2 - 1
Inc/DS1302.h

@@ -1,6 +1,7 @@
 #ifndef __DS1302_H__
 #define __DS1302_H__
 #include "stm32f7xx_hal.h"
+#include "Data_deal.h"
 //IO·½ÏòÉèÖÃ
 //#define DS1302_IO_IN()  {GPIOC->CRL&=0X0FFFFFFF;GPIOC->CRL|=((unsigned int)8<<28);}
 
@@ -54,7 +55,7 @@ void Set_IO_OUT(void);
 void ds1302_writeV2(unsigned char time_tx);
 void ds1302_initV2(void);
 void DS1302_get_all(void);
-
+void ds1302_SynTime(SDateTime * datetime);
 
 #endif
 

+ 12 - 12
Inc/Dwin.h

@@ -18,21 +18,21 @@
 
 typedef  struct	 
 {
-   uint8_t    Cmd_Flag;		//命令标志位
-   uint16_t   Cmd_Addr;		//接收到的命令
-   uint32_t   Cmd_Data;		//接收到的数据
+   uint8_t    Cmd_Flag;					//命令标志位
+   uint16_t   Cmd_Addr;					//接收到的命令
+   uint32_t   Cmd_Data;					//接收到的数据
 }RxCmdArray;
 
 typedef  struct	
 {
-	uint8_t key;//按键键值
-	uint8_t Key_up_flag;//按键按下有数据输入
-	uint8_t mode;//系统运行模式 0系统运行  1调试模式  2
-	uint8_t current_page;//当前界面
-	uint8_t Main_Page_id;//主界面ID
-	uint8_t Full_oil_id;//装油界面
-	uint8_t offLoading_oil_id;//卸油界面ID
-	uint8_t Liquid_id;  //液位温度页面ID
+	uint8_t key;									//按键键值
+	uint8_t Key_up_flag;					//按键按下有数据输入
+	uint8_t mode;									//系统运行模式 0系统运行  1调试模式  2
+	uint8_t current_page;					//当前界面
+	uint8_t Main_Page_id;					//主界面ID
+	uint8_t Full_oil_id;					//装油界面
+	uint8_t offLoading_oil_id;		//卸油界面ID
+	uint8_t Liquid_id;  					//液位温度页面ID
 }Run_mode_key;
 extern Run_mode_key Run_mode_key_info;
 extern uint8_t Lcd_sleep_flag;
@@ -40,7 +40,7 @@ extern uint8_t Lcd_sleep_flag;
 extern uint8_t time_Set_Dwin[14];
 extern uint8_t DateDwin[8];
 void GetDateFromDwin(void);
-
+int Init_Dwin_Signal(void);
 void WrDwinCmd8(uint16_t addr16,uint8_t data8);
 void WrDwinCmd16(uint16_t addr16,uint16_t data16);
 void WrDwinCmd32(uint16_t addr16,uint32_t data32);

+ 139 - 139
Inc/KeySlave485.h

@@ -6,8 +6,8 @@
 //必须配置三项参数:看门狗,液位计类型,油品类型。李伟修改  20210420
 
 //0----关闭看门狗SP706   1----打开看门狗SP706--------------必须配置的参数1/3
-#define WatchDogOn   						1   //是否打开看门狗 
-//#define WatchDogOn   							0   //是否打开看门狗 
+//#define WatchDogOn   						1   //是否打开看门狗 
+#define WatchDogOn   							0   //是否打开看门狗 
 
 #define TIME_OF_Break_seal_cnt 		1  //30     连续破封判断次数
 
@@ -120,49 +120,49 @@
 
 ///////异常状态标志
 #define ADDR_DWIN_StateYiChang_CoverSmall 0x1046   //迪文屏幕人孔小盖地址
-#define ADDR_DWIN_StateYiChang_CoverBig 0x1048   //迪文屏幕人孔大盖地址
-#define ADDR_DWIN_StateYiChang_XieYouFa 0x1042   //迪文屏幕卸油阀地址
-#define ADDR_DWIN_StateYiChang_HaiDiFa 0x1044   //迪文屏幕海底阀地址
+#define ADDR_DWIN_StateYiChang_CoverBig 	0x1048   //迪文屏幕人孔大盖地址
+#define ADDR_DWIN_StateYiChang_XieYouFa 	0x1042   //迪文屏幕卸油阀地址
+#define ADDR_DWIN_StateYiChang_HaiDiFa 		0x1044   //迪文屏幕海底阀地址
 
-#define ADDR_DWIN_Seal_Lock 0x100C   //迪文屏幕施封图标(关闭的锁)地址
-#define ADDR_DWIN_Seal_UnLock 0x100F   //迪文屏幕破封图标(打开的锁)地址
+#define ADDR_DWIN_Seal_Lock 							0x100C   //迪文屏幕施封图标(关闭的锁)地址
+#define ADDR_DWIN_Seal_UnLock 						0x100F   //迪文屏幕破封图标(打开的锁)地址
 
-#define ADDR_DWIN_Car_State 0x1022   //迪文屏幕车辆状态图标地址
-#define ADDR_DWIN_Operation_State 0x1024   //迪文屏幕操作状态状态图标地址   装油   卸油  空闲
-#define ADDR_DWIN_Loading_Oil_Mode 0x1028   //迪文屏幕装油模式图标地址   上装  下装
-#define ADDR_DWIN_UnLoading_Oil_Mode 0x102a   //迪文屏幕卸油动画图标地址   上装  下装
+#define ADDR_DWIN_Car_State 							0x1022   //迪文屏幕车辆状态图标地址
+#define ADDR_DWIN_Operation_State 				0x1024   //迪文屏幕操作状态状态图标地址   装油   卸油  空闲
+#define ADDR_DWIN_Loading_Oil_Mode 				0x1028   //迪文屏幕装油模式图标地址   上装  下装
+#define ADDR_DWIN_UnLoading_Oil_Mode 			0x102a   //迪文屏幕卸油动画图标地址   上装  下装
 
-#define ADDR_DWIN_Num_Of_CangId 0x103A   //迪文屏幕仓号图标地址   1--8
+#define ADDR_DWIN_Num_Of_CangId 					0x103A   //迪文屏幕仓号图标地址   1--8
 
 
-#define ADDR_DWIN_CoverSmall 0x1000   //迪文屏幕人孔小盖开关地址   打开或者关闭
-#define ADDR_DWIN_CoverBig 0x1003   //迪文屏幕人孔大盖开关地址   打开或者关闭
-#define ADDR_DWIN_HaiDiFa 0x1006   //迪文屏幕海底阀开关地址   打开或者关闭
-#define ADDR_DWIN_XieYouFa 0x1009   //迪文屏幕卸油阀开关地址   打开或者关闭
+#define ADDR_DWIN_CoverSmall 							0x1000   //迪文屏幕人孔小盖开关地址   打开或者关闭
+#define ADDR_DWIN_CoverBig 								0x1003   //迪文屏幕人孔大盖开关地址   打开或者关闭
+#define ADDR_DWIN_HaiDiFa 								0x1006   //迪文屏幕海底阀开关地址   打开或者关闭
+#define ADDR_DWIN_XieYouFa 								0x1009   //迪文屏幕卸油阀开关地址   打开或者关闭
 
 
 
-#define ADDR_DWIN_Seal_UnLock 0x100F   //迪文屏幕破封图标(打开的锁)地址
+#define ADDR_DWIN_Seal_UnLock 						0x100F   //迪文屏幕破封图标(打开的锁)地址
 
-#define ADDR_DWIN_Loading_Oil 0x1012   //迪文屏幕装油动画图标(打开的锁)地址第一仓,后边每仓地址+2
+#define ADDR_DWIN_Loading_Oil 						0x1012   //迪文屏幕装油动画图标(打开的锁)地址第一仓,后边每仓地址+2
 
 
-#define ADDR_DWIN_Text01 0x1070   //迪文屏幕显示文本框的地址
-#define ADDR_DWIN_Text02 0x1270   //迪文屏幕显示文本框的地址
+#define ADDR_DWIN_Text01 									0x1070   //迪文屏幕显示文本框的地址
+#define ADDR_DWIN_Text02 									0x1270   //迪文屏幕显示文本框的地址
 
-#define ADDR_DWIN_Text03_sysInfo 	0x1470   //迪文屏幕显示文本框的地址----------系统运行信息
-#define ADDR_DWIN_Text04 					0x1670   //迪文屏幕显示文本框的地址
-#define ADDR_DWIN_Text05 					0x1870   //迪文屏幕显示文本框的地址---启动界面的版本信息
+#define ADDR_DWIN_Text03_sysInfo 					0x1470   //迪文屏幕显示文本框的地址----------系统运行信息
+#define ADDR_DWIN_Text04 									0x1670   //迪文屏幕显示文本框的地址
+#define ADDR_DWIN_Text05 									0x1870   //迪文屏幕显示文本框的地址---启动界面的版本信息
 
 
 
 
 
-//#define ADDR_DWIN_Title_IO 0x1B00   //阀门名称标志
-//#define ADDR_DWIN_Cang01_IO 0x1C00   //仓1的阀门状态信息
-//#define ADDR_DWIN_Cang02_IO 0x1A00   //仓2的阀门状态信息
-//#define ADDR_DWIN_Cang03_IO 0x1D00   //仓3的阀门状态信息
-//#define ADDR_DWIN_Cang04_IO 0x1E00   //仓4的阀门状态信息
+//#define ADDR_DWIN_Title_IO 						0x1B00   //阀门名称标志
+//#define ADDR_DWIN_Cang01_IO 						0x1C00   //仓1的阀门状态信息
+//#define ADDR_DWIN_Cang02_IO 						0x1A00   //仓2的阀门状态信息
+//#define ADDR_DWIN_Cang03_IO 						0x1D00   //仓3的阀门状态信息
+//#define ADDR_DWIN_Cang04_IO 						0x1E00   //仓4的阀门状态信息
 
 
 #define ADDR_DWIN_Title_IO 			0x1A00   //阀门名称标志
@@ -179,7 +179,7 @@
 #define ADDR_DWIN_Text03_SP 		0x5020   
 #define ADDR_DWIN_Text04_SP 		0x5030   
 #define ADDR_DWIN_Text05_SP 		0x5040 
-
+			
 
 #define ADDR_DWIN_Title_IO_SP 		0x5050   //阀门名称描述指针
 #define ADDR_DWIN_Cang01_IO_SP 		0x5060   //仓1的阀门状态信息描述指针
@@ -190,33 +190,33 @@
 
 
 
-#define ADDR_DWIN_Tempe01 0x2040    //1仓温度数据
-#define ADDR_DWIN_Pressure01 0x2044    //1仓压力数据
-#define ADDR_DWIN_Yewei01_Cang01 0x2048    //1仓液位数据
-#define ADDR_DWIN_Qingjiao01 0x204c    //倾角1数据
-#define ADDR_DWIN_Qingjiao02 0x207c    //倾角2数据
-#define ADDR_DWIN_Zhongliang 0x2050    //1仓重量数据,或等于整车油品重量
+#define ADDR_DWIN_Tempe01 				0x2040    //1仓温度数据
+#define ADDR_DWIN_Pressure01 			0x2044    //1仓压力数据
+#define ADDR_DWIN_Yewei01_Cang01	0x2048    //1仓液位数据
+#define ADDR_DWIN_Qingjiao01 			0x204c    //倾角1数据
+#define ADDR_DWIN_Qingjiao02 			0x207c    //倾角2数据
+#define ADDR_DWIN_Zhongliang 			0x2050    //1仓重量数据,或等于整车油品重量
 #define ADDR_DWIN_TempeManualInput 0x2080    //手工输入的1仓温度;主要用于新疆现场比武
 
-#define ADDR_DWIN_Yewei01_Cang02 0x2060    //2仓液位数据
-#define ADDR_DWIN_Yewei01_Cang03 0x2064    //3仓液位数据
-#define ADDR_DWIN_Yewei01_Cang04 0x2068    //4仓液位数据
+#define ADDR_DWIN_Yewei01_Cang02 	0x2060    //2仓液位数据
+#define ADDR_DWIN_Yewei01_Cang03 	0x2064    //3仓液位数据
+#define ADDR_DWIN_Yewei01_Cang04 	0x2068    //4仓液位数据
 
 
 
-#define ADDR_DWIN_Vt_Cang01 0x2054    //第1仓的Vt数据
-#define ADDR_DWIN_Vt_Cang02 0x20A0    //第2仓的Vt数据
-#define ADDR_DWIN_Vt_Cang03 0x20A4    //第3仓的Vt数据
-#define ADDR_DWIN_Vt_Cang04 0x20A8    //第4仓的Vt数据
+#define ADDR_DWIN_Vt_Cang01 			0x2054    //第1仓的Vt数据
+#define ADDR_DWIN_Vt_Cang02 			0x20A0    //第2仓的Vt数据
+#define ADDR_DWIN_Vt_Cang03 			0x20A4    //第3仓的Vt数据
+#define ADDR_DWIN_Vt_Cang04 			0x20A8    //第4仓的Vt数据
 
 
-#define ADDR_DWIN_V20_Cang01 0x2058    //第一仓的V20数据
+#define ADDR_DWIN_V20_Cang01 			0x2058    //第一仓的V20数据
 
-#define ADDR_DWIN_Tempe01_Cang01 0x2084    //第一仓的温度测量点1
-#define ADDR_DWIN_Tempe02_Cang01 0x2088    //第一仓的温度测量点2
-#define ADDR_DWIN_Tempe03_Cang01 0x208c    //第一仓的温度测量点3
+#define ADDR_DWIN_Tempe01_Cang01 	0x2084    //第一仓的温度测量点1
+#define ADDR_DWIN_Tempe02_Cang01 	0x2088    //第一仓的温度测量点2
+#define ADDR_DWIN_Tempe03_Cang01 	0x208c    //第一仓的温度测量点3
  
-#define ADDR_DWIN_Density_Cang01 0x2090    //第一仓的密度数据
+#define ADDR_DWIN_Density_Cang01 	0x2090    //第一仓的密度数据
 
 
 
@@ -232,91 +232,91 @@
 
 
 //Fram中存储的所有参数
-#define 	ADDR_Extended_ContBoard	0x0000	//	0	95010001	扩展地址
-#define 	ADDR_Version_ContBoard	0x0004	//	4	STM32F746VGT6+2021v1.06	版本号
-#define 	ADDR_AutoSealed_Time	0x0024	//	36		自动施封时长
+#define 	ADDR_Extended_ContBoard				0x0000	//	0	95010001	扩展地址
+#define 	ADDR_Version_ContBoard				0x0004	//	4	STM32F746VGT6+2021v1.06	版本号
+#define 	ADDR_AutoSealed_Time					0x0024	//	36		自动施封时长
 #define 	ADDR_DataSource_LiquidoMeter	0x002C	//	44		液晶屏数据显示来源——液位参数
-#define 	ADDR_DataSource_ElecSeal	0x0030	//	48		液晶屏数据显示来源——铅封参数
-#define 	ADDR_V20_Point	0x0034	//	52		V20计算温度点的选择
-#define 	ADDR_CarPlate_Number	0x0044	//	68		车牌号
-#define 	ADDR_Zero_Of_LiquidMeter	0x0064	//	100	兼容8仓	液位计零点
-#define 	ADDR_Zero_Of_TankCapacity	0x0084	//	132		罐容Vt零点
-#define 	ADDR_ManHoLe_Number	0x00A4	//	164		人孔盖卸油阀数量
-#define 	ADDR_OiLType_Data	0x00E4	//	228		油品参数   膨胀系数 0.0008  0.0012
-#define 	ADDR_Zero_Of_TempSensor	0x0104	//	260		温度偏移参数
-#define 	ADDR_TankShape_01	0x0124	//	292	1—4仓	罐车参数1
-#define 	ADDR_TankShape_02	0x0164	//	356	5—8仓	罐车参数2
-#define 	ADDR_SampIntervaL_Collector	0x01A4	//	420	单位为毫秒。取值范围为	同采集板的采样间隔
+#define 	ADDR_DataSource_ElecSeal			0x0030	//	48		液晶屏数据显示来源——铅封参数
+#define 	ADDR_V20_Point								0x0034	//	52		V20计算温度点的选择
+#define 	ADDR_CarPlate_Number					0x0044	//	68		车牌号
+#define 	ADDR_Zero_Of_LiquidMeter			0x0064	//	100	兼容8仓	液位计零点
+#define 	ADDR_Zero_Of_TankCapacity			0x0084	//	132		罐容Vt零点
+#define 	ADDR_ManHoLe_Number						0x00A4	//	164		人孔盖卸油阀数量
+#define 	ADDR_OiLType_Data							0x00E4	//	228		油品参数   膨胀系数 0.0008  0.0012
+#define 	ADDR_Zero_Of_TempSensor				0x0104	//	260		温度偏移参数
+#define 	ADDR_TankShape_01							0x0124	//	292	1—4仓	罐车参数1
+#define 	ADDR_TankShape_02							0x0164	//	356	5—8仓	罐车参数2
+#define 	ADDR_SampIntervaL_Collector		0x01A4	//	420	单位为毫秒。取值范围为	同采集板的采样间隔
 #define 	ADDR_CommuIntervaL_ScreenDwin	0x01B4	//	436		同迪文屏的通信间隔
-#define 	ADDR_SleepTime_ScreenDwin	0x01C4	//	452		屏幕休眠时间
-#define 	ADDR_RTC_ScreenDwin	0x01CC	//	460		屏幕RTC标定
-#define 	ADDR_TiltAngle_Sensor	0x01DC	//	476		倾角补偿参数
-#define 	ADDR_WarningOf_TiltAngle	0x01EC	//	492	x报警门限5度,y报警门限5度,启用报警。	倾角报警门限
+#define 	ADDR_SleepTime_ScreenDwin			0x01C4	//	452		屏幕休眠时间
+#define 	ADDR_RTC_ScreenDwin						0x01CC	//	460		屏幕RTC标定
+#define 	ADDR_TiltAngle_Sensor					0x01DC	//	476		倾角补偿参数
+#define 	ADDR_WarningOf_TiltAngle			0x01EC	//	492	x报警门限5度,y报警门限5度,启用报警。	倾角报警门限
 #define 	ADDR_Auto_OilStatic_Judgement	0x01FC	//	508	10s滑动窗口时间,3mm液位波动,启用自动稳油	自动稳油参数/打印机自动稳油判断
-#define 	ADDR_Restart_ContBoard	0x020C	//	524		复位指令
-#define 	ADDR_Unique_ID_ContBoard	0x0210	//	528		唯一ID
-#define 	ADDR_VersionOf_Software	0x0220	//	544	1.0.0.0	软件版本号
-#define 	ADDR_VersionOf_Hardware	0x0240	//	576	1.0.0.1	硬件版本号
-#define 	ADDR_VersionOf_LCD	0x0260		//608		
-#define 	ADDR_FactoryParam_ContBoard	0x0280	//	640	所有参数恢复为默认值	出厂参数
-#define 	ADDR_SelfTest_ContBoard	0x0284	//	644		自检结果
-#define 	ADDR_BaudRate_ContBoard	0x0288	//	648		波特率
-#define 	ADDR_Zero001_ContBoard	0x0298	//	664		零点参数
-#define 	ADDR_Scale001_ContBoard	0x02A8	//	680		灵敏度参数
+#define 	ADDR_Restart_ContBoard				0x020C	//	524		复位指令
+#define 	ADDR_Unique_ID_ContBoard			0x0210	//	528		唯一ID
+#define 	ADDR_VersionOf_Software				0x0220	//	544	1.0.0.0	软件版本号
+#define 	ADDR_VersionOf_Hardware				0x0240	//	576	1.0.0.1	硬件版本号
+#define 	ADDR_VersionOf_LCD						0x0260	//	608		
+#define 	ADDR_FactoryParam_ContBoard		0x0280	//	640	所有参数恢复为默认值	出厂参数
+#define 	ADDR_SelfTest_ContBoard				0x0284	//	644		自检结果
+#define 	ADDR_BaudRate_ContBoard				0x0288	//	648		波特率
+#define 	ADDR_Zero001_ContBoard				0x0298	//	664		零点参数
+#define 	ADDR_Scale001_ContBoard				0x02A8	//	680		灵敏度参数
 #define 	ADDR_ThreshHold001_ContBoard	0x02B8	//	696		阈值参数
-#define 	ADDR_Precision_ContBoard	0x02C8	//	712		精度
-#define 	ADDR_TempFactor_ContBoard	0x02D8	//	728		温度补偿系数
-#define 	ADDR_YmodemMode_ContBoard	0x02E8	//	744		Ymodem模式
-#define 	ADDR_Reserve001_ContBoard	0x02EC	//	748		Res001
+#define 	ADDR_Precision_ContBoard			0x02C8	//	712		精度
+#define 	ADDR_TempFactor_ContBoard			0x02D8	//	728		温度补偿系数
+#define 	ADDR_YmodemMode_ContBoard			0x02E8	//	744		Ymodem模式
+#define 	ADDR_Reserve001_ContBoard			0x02EC	//	748		Res001
 
 //李伟修改  20211130   压力报警上限、下限、温度上限、下限、温度修正、压力窗口时长、压力正偏门限、负偏门限、压力修正、算法类型等
 //数据格式统一标准化未浮点数,每个数据占用4字节。平台下发数据均为浮点数格式,控制板根据需要进行强制类型转换。
-#define 	ADDR_RunAn_AlarmThreshold 	0x02EC	//	748		Res001  44个字节
+#define 	ADDR_RunAn_AlarmThreshold 		0x02EC	//	748		Res001  44个字节
 //诸正龙增加 20220113 
-#define   ADDR_USART1_RE_TIMEOUT			0x0318   //终端通信多少时间无接收重启 4字节
-#define   ADDR_DISP_VT_TYPE           0x031C    //VT 20的显示数据来源
-
-#define 	ADDR_Reserve002_ContBoard	0x02F0	//	752		Res002
-#define 	ADDR_Reserve003_ContBoard	0x02F4	//	756		Res003
-#define 	ADDR_Reserve004_ContBoard	0x02F8	//	760		Res004
-#define 	ADDR_Reserve005_ContBoard	0x02FC	//	764		Res005
-#define 	ADDR_Reserve006_ContBoard	0x0300	//	768		Res006
-#define 	ADDR_Reserve007_ContBoard	0x0304	//	772		Res007
-#define 	ADDR_Reserve008_ContBoard	0x0308	//	776		Res008
+#define   ADDR_USART1_RE_TIMEOUT				0x0318   //终端通信多少时间无接收重启 4字节
+#define   ADDR_DISP_VT_TYPE           	0x031C   //VT 20的显示数据来源
+
+#define 	ADDR_Reserve002_ContBoard			0x02F0	//	752		Res002
+#define 	ADDR_Reserve003_ContBoard			0x02F4	//	756		Res003
+#define 	ADDR_Reserve004_ContBoard			0x02F8	//	760		Res004
+#define 	ADDR_Reserve005_ContBoard			0x02FC	//	764		Res005
+#define 	ADDR_Reserve006_ContBoard			0x0300	//	768		Res006
+#define 	ADDR_Reserve007_ContBoard			0x0304	//	772		Res007
+#define 	ADDR_Reserve008_ContBoard			0x0308	//	776		Res008
 #define 	ADDR_ElecSealData_BulkTrans_ContBoard	0x030C	//	780		铅封液位批量上传
-#define 	ADDR_Cabinet01_ContBoard	0x0310	//	784	32个浮点数参数或者64个int16类型数据,4字节对齐。一帧数据128*2=256字符上发给平台.	仓1
-#define 	ADDR_Cabinet02_ContBoard	0x0390	//	912		仓2
-#define 	ADDR_Cabinet03_ContBoard	0x0410	//	1040		仓3
-#define 	ADDR_Cabinet04_ContBoard	0x0490	//	1168		仓4
-#define 	ADDR_Cabinet05_ContBoard	0x0510	//	1296		仓5
-#define 	ADDR_Cabinet06_ContBoard	0x0530	//	1328		仓6
-#define 	ADDR_Cabinet07_ContBoard	0x0550	//	1360		仓7
-#define 	ADDR_Cabinet08_ContBoard	0x0570	//	1392		仓8
-#define 	ADDR_AuthorizeCode	0x0590	//	1424	8仓,每仓4字节	授权解封密码
-#define 	ADDR_Is_In_ElecFence	0x05D0	//	1488		车是否在电子围栏内
-#define 	ADDR_TankCapacity_Table	0x05D4	//	1492	200cm高度,200个u16数据	罐容表标定
-#define 	ADDR_Auto_sealedOK_ID	0x0764	//	1892		原控制板兼容地址
-#define 	ADDR_Break_sealing_Id	0x0768	//	1896		原控制板兼容地址
-#define 	ADDR_Config_fun_id	0x076C	//	1900		原控制板兼容地址
-#define 	ADDR_Auto_Seal_Time	0x0770	//	1904		原控制板兼容地址
-#define 	ADDR_Baseval_ID	0x0774	//	1908		原控制板兼容地址
-#define 	ADDR_StoreNumber	0x0778	//	1912		原控制板兼容地址
-#define 	ADDR_ManHole_Big_info	0x077C	//	1916		原控制板兼容地址
-#define 	ADDR_ManHole_small_info	0x0780	//	1920		原控制板兼容地址
-#define 	ADDR_Dump_info	0x0784	//	1924		原控制板兼容地址
-#define 	ADDR_Foot_info	0x0788	//	1928		原控制板兼容地址
-#define 	ADDR_DebugControll	0x078C	//	1932		调试信息控制
-#define 	ADDR_TotalRunTime	0x0794		//1940累计运行时间计数器
-#define 	ADDR_State_ElecSeal_FSM	0x0798	//	1944		基于状态机的电子铅封状态
-#define 	ADDR_SW_Voice_Printer	0x07A0	//	1952		是否开启打印机,语音播报-----每个bit表示一个外设;4个字节,最多支持32个外接设备
-
-#define 	ADDR_Enable_BlankSeal	0x07A4     //	1956		是否允许空仓施封
-
-#define 	ADDR_Enable_DispSysInfo	0x07A8	//	1960		是否允许显示系统信息等
+#define 	ADDR_Cabinet01_ContBoard			0x0310	//	784	32个浮点数参数或者64个int16类型数据,4字节对齐。一帧数据128*2=256字符上发给平台.	仓1
+#define 	ADDR_Cabinet02_ContBoard			0x0390	//	912			仓2
+#define 	ADDR_Cabinet03_ContBoard			0x0410	//	1040		仓3
+#define 	ADDR_Cabinet04_ContBoard			0x0490	//	1168		仓4
+#define 	ADDR_Cabinet05_ContBoard			0x0510	//	1296		仓5
+#define 	ADDR_Cabinet06_ContBoard			0x0530	//	1328		仓6
+#define 	ADDR_Cabinet07_ContBoard			0x0550	//	1360		仓7
+#define 	ADDR_Cabinet08_ContBoard			0x0570	//	1392		仓8
+#define 	ADDR_AuthorizeCode						0x0590	//	1424		8仓,每仓4字节	授权解封密码
+#define 	ADDR_Is_In_ElecFence					0x05D0	//	1488		车是否在电子围栏内
+#define 	ADDR_TankCapacity_Table				0x05D4	//	1492		200cm高度,200个u16数据	罐容表标定
+#define 	ADDR_Auto_sealedOK_ID					0x0764	//	1892		原控制板兼容地址
+#define 	ADDR_Break_sealing_Id					0x0768	//	1896		原控制板兼容地址
+#define 	ADDR_Config_fun_id						0x076C	//	1900		原控制板兼容地址
+#define 	ADDR_Auto_Seal_Time						0x0770	//	1904		原控制板兼容地址
+#define 	ADDR_Baseval_ID								0x0774	//	1908		原控制板兼容地址
+#define 	ADDR_StoreNumber							0x0778	//	1912		原控制板兼容地址
+#define 	ADDR_ManHole_Big_info					0x077C	//	1916		原控制板兼容地址
+#define 	ADDR_ManHole_small_info				0x0780	//	1920		原控制板兼容地址
+#define 	ADDR_Dump_info								0x0784	//	1924		原控制板兼容地址
+#define 	ADDR_Foot_info								0x0788	//	1928		原控制板兼容地址
+#define 	ADDR_DebugControll						0x078C	//	1932		调试信息控制
+#define 	ADDR_TotalRunTime							0x0794	//	1940		累计运行时间计数器
+#define 	ADDR_State_ElecSeal_FSM				0x0798	//	1944		基于状态机的电子铅封状态
+#define 	ADDR_SW_Voice_Printer					0x07A0	//	1952		是否开启打印机,语音播报-----每个bit表示一个外设;4个字节,最多支持32个外接设备
+
+#define 	ADDR_Enable_BlankSeal					0x07A4	//	1956		是否允许空仓施封
+
+#define 	ADDR_Enable_DispSysInfo				0x07A8	//	1960		是否允许显示系统信息等
 
 
 //以下参数不用保存在FRAM中,地址跟实际的存储地址无关联,仅用于功能跳转   --开启液位传感器,压力传感器,断电保存,两边有油算法,允许重复施封,液晶类型,保留字,自动施封
-#define 	ADDR_Enable_ReSeal	0x4000	//	16384		是否允许显示系统信息等
+#define 	ADDR_Enable_ReSeal						0x4000	//	16384		是否允许显示系统信息等
 
 
 //////最高地址不大于0x07ff=2047
@@ -324,47 +324,47 @@
 
 
 
-#define 	ADDR_Sw_VoicePlay	0x8000	//切换语音播报功能  
-#define 	ADDR_Sw_ValveRaw	0x8001	////切换阀门的原始数据或者汉字数据 
+#define 	ADDR_Sw_VoicePlay							0x8000	//切换语音播报功能  
+#define 	ADDR_Sw_ValveRaw							0x8001			//切换阀门的原始数据或者汉字数据 
 
 
 //新增密码存储地址
 
 //-----按键功能码
-#define 	DebugFun_LCD_Version			90004	//	1920	版本信息
-#define 	DebugFun_LCD_SleepTime			90002	//	LCD 休眠时间
-#define 	DebugFun_DS1302Time				90003	//	1928		显示DS1302时间
-#define 	DebugFun_CarLicensePlate	90068	//	显示车牌号
-#define 	DebugFun_CarLicensePlate1	90005	//	显示车牌号	
+#define 	DebugFun_LCD_Version					90004	//	1920	版本信息
+#define 	DebugFun_LCD_SleepTime				90002	//	LCD 休眠时间
+#define 	DebugFun_DS1302Time						90003	//	1928		显示DS1302时间
+#define 	DebugFun_CarLicensePlate			90068	//	显示车牌号
+#define 	DebugFun_CarLicensePlate1			90005	//	显示车牌号	
 
 #define 	DebugFun__Restart_ContBoard00	90523	//立即重启
 #define 	DebugFun__Restart_ContBoard01	90524	//可以取消的重启
 #define 	DebugFun_VersionOf_Software		90544	//软件版本号
 
 //强制清除各仓的显示信息,避免乱码无法消除----因为正常只有39字符,原始数字较长,所以后边有残余
-#define 	DebugFun_Clear_Valve_Info	99997	
-#define 	DebugFun_Show_product_ID	99998	//显示产品ID
-#define 	DebugFun_Show_Terminal		99999	//显示来自终端的命令信息
+#define 	DebugFun_Clear_Valve_Info			99997	
+#define 	DebugFun_Show_product_ID			99998	//显示产品ID
+#define 	DebugFun_Show_Terminal				99999	//显示来自终端的命令信息
 
 
 
 
 #define 	DebugFun_Sw_VoicePlay					98000	//切换语音播报功能
 #define 	DebugFun_Sw_ValveRaw					98001	//切换阀门的原始数据或者汉字数据
-#define 	DebugFun_Sw_DisplaySensorData		98002	//切换是否显示模拟量类的传感器数据  flag_Sw_DisplaySensorData
+#define 	DebugFun_Sw_DisplaySensorData	98002	//切换是否显示模拟量类的传感器数据  flag_Sw_DisplaySensorData
 #define 	DebugFun_Refresh_Title_IO			98003	//强制刷新一次阀门名称显示
 #define 	DebugFun_Sw_DispSysInfo				98004	//是否实时显示系统运行信息等
 #define 	DebugFun_Disp_Valve_Info_Bit	98005	//在1仓的位置显示老协议的阀门信息,每个bit表示一个阀门状态,帧标志为0xA1
 
 
-#define 	DebugFun_Set_Cang_NUM01	98101	//手动设定为1仓1阀门
-#define 	DebugFun_Set_Cang_NUM02	98102	//手动设定为2仓2阀门
-#define 	DebugFun_Set_Cang_NUM03	98103	//手动设定为3仓3阀门
-#define 	DebugFun_Set_Cang_NUM04	98104	//手动设定为4仓4阀门
-#define 	DebugFun_Set_Cang_NUM05	98105	//手动设定为5仓5阀门
-#define 	DebugFun_Set_Cang_NUM06	98106	//手动设定为6仓6阀门
-#define 	DebugFun_Set_Cang_NUM07	98107	//手动设定为7仓7阀门
-#define 	DebugFun_Set_Cang_NUM08	98108	//手动设定为8仓8阀门
+#define 	DebugFun_Set_Cang_NUM01				98101	//手动设定为1仓1阀门
+#define 	DebugFun_Set_Cang_NUM02				98102	//手动设定为2仓2阀门
+#define 	DebugFun_Set_Cang_NUM03				98103	//手动设定为3仓3阀门
+#define 	DebugFun_Set_Cang_NUM04				98104	//手动设定为4仓4阀门
+#define 	DebugFun_Set_Cang_NUM05				98105	//手动设定为5仓5阀门
+#define 	DebugFun_Set_Cang_NUM06				98106	//手动设定为6仓6阀门
+#define 	DebugFun_Set_Cang_NUM07				98107	//手动设定为7仓7阀门
+#define 	DebugFun_Set_Cang_NUM08				98108	//手动设定为8仓8阀门
 
 #define 	DebugFun_Set_BlankSeal_Enable 	98109	//手动设定空仓允许施封
 #define 	DebugFun_Set_BlankSeal_Disable	98110	//手动设定空仓禁止施封

+ 3 - 0
Inc/TerminalSlave485.h

@@ -465,4 +465,7 @@ int 	Process_CMD_0x38_AutoSeal_By_ElecFence(void);//
 int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode);//Ô¶³Ì±ê¶¨
 void FormatEachStoreData(uint8_t storeNum);
 void FormatWholeCarData(void);
+
+void Reboot_System(void);
+void JumpToAPP2(void);
 #endif

+ 1 - 1
Inc/main.h

@@ -59,7 +59,7 @@ extern "C" {
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
-
+#include "cmsis_os.h"
 #ifndef IR_ROM1
 #define IR_ROM1 0x8000000  //APP1
 //#define IR_ROM1 	0x8080000 //APP2

+ 5 - 2
Inc/md5c.h

@@ -20,8 +20,11 @@ typedef struct {
 void MD5Init (MD5_CTX *context); 
 void MD5Update (MD5_CTX *context, unsigned char *input, unsigned int inputLen); 
 void MD5UpdaterString(MD5_CTX *context,const char *string); 
-int MD5FileUpdateFile (MD5_CTX *context,char *filename); 
+
 void MD5Final (unsigned char digest[16], MD5_CTX *context); 
 void MDString (char *string,unsigned char digest[16]); 
-int MD5File (char *filename,unsigned char digest[16]); 
+#if 0
+//int MD5File (char *filename,unsigned char digest[16]); 
+//int MD5FileUpdateFile (MD5_CTX *context,char *filename); 
+#endif
 #endif

File diff suppressed because it is too large
+ 374 - 122
MDK-ARM/TestF7.uvguix.Administrator


+ 213 - 179
MDK-ARM/TestF7.uvoptx

@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>6</nTsel>
+        <nTsel>4</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,13 +114,13 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+        <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGUARM</Key>
-          <Name>(105=-1,-1,-1,-1,0)</Name>
+          <Name></Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -150,7 +150,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U69660610 -O111 -S7 -ZTIFSpeedSel200 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO19 -TC10000000 -TP21 -TDS8008 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20010000 -FC1000 -FN1 -FF0STM32F7x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F746VGTx$CMSIS\Flash\STM32F7x_1024.FLM)</Name>
+          <Name>-U69660481 -O111 -S1 -ZTIFSpeedSel10000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO19 -TC10000000 -TP21 -TDS8008 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20010000 -FC1000 -FN1 -FF0STM32F7x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F746VGTx$CMSIS\Flash\STM32F7x_1024.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -198,47 +198,57 @@
         <Ww>
           <count>6</count>
           <WinNumber>1</WinNumber>
-          <ItemText>USART1_RX_BUF</ItemText>
+          <ItemText>terminal_buf</ItemText>
         </Ww>
         <Ww>
           <count>7</count>
           <WinNumber>1</WinNumber>
-          <ItemText>temp_dataFromUsart1</ItemText>
+          <ItemText>data_count</ItemText>
         </Ww>
         <Ww>
           <count>8</count>
           <WinNumber>1</WinNumber>
-          <ItemText>terminal_buf</ItemText>
+          <ItemText>re_count</ItemText>
         </Ww>
         <Ww>
           <count>9</count>
           <WinNumber>1</WinNumber>
-          <ItemText>data_count</ItemText>
+          <ItemText>data_frame.Frame_addr</ItemText>
         </Ww>
         <Ww>
           <count>10</count>
           <WinNumber>1</WinNumber>
-          <ItemText>re_count</ItemText>
+          <ItemText>data_frame.Frame_funcode</ItemText>
         </Ww>
         <Ww>
           <count>11</count>
           <WinNumber>1</WinNumber>
-          <ItemText>data_frame.Frame_addr</ItemText>
+          <ItemText>overflow_cnt</ItemText>
         </Ww>
         <Ww>
           <count>12</count>
           <WinNumber>1</WinNumber>
-          <ItemText>data_frame.Frame_funcode</ItemText>
+          <ItemText>Pro_overflow_cnt</ItemText>
         </Ww>
         <Ww>
           <count>13</count>
           <WinNumber>1</WinNumber>
-          <ItemText>overflow_cnt</ItemText>
+          <ItemText>USART2_TX_BUF</ItemText>
         </Ww>
         <Ww>
           <count>14</count>
           <WinNumber>1</WinNumber>
-          <ItemText>Pro_overflow_cnt</ItemText>
+          <ItemText>uart2_buf</ItemText>
+        </Ww>
+        <Ww>
+          <count>15</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>rx2_len</ItemText>
+        </Ww>
+        <Ww>
+          <count>16</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>USART1_RX_BUF</ItemText>
         </Ww>
       </WatchWindow1>
       <WatchWindow2>
@@ -287,7 +297,7 @@
         <Mm>
           <WinNumber>1</WinNumber>
           <SubType>0</SubType>
-          <ItemText>0x08091100</ItemText>
+          <ItemText>\\dzqf_kzb09a0_ZhongLan20211112\../Src/usart.c\USART2_TX_BUF</ItemText>
           <AccSizeX>0</AccSizeX>
         </Mm>
       </MemoryWindow1>
@@ -297,7 +307,7 @@
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>1</aLwin>
+        <aLwin>0</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
@@ -345,7 +355,7 @@
 
   <Group>
     <GroupName>Application/User</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -356,102 +366,6 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\TerminalSlave485.c</PathWithFileName>
-      <FilenameWithoutPath>TerminalSlave485.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>2</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\KeySlave485.c</PathWithFileName>
-      <FilenameWithoutPath>KeySlave485.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>3</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\CollectMaster485.c</PathWithFileName>
-      <FilenameWithoutPath>CollectMaster485.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>4</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\ScreenMaster485.c</PathWithFileName>
-      <FilenameWithoutPath>ScreenMaster485.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>5</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\Data_deal.c</PathWithFileName>
-      <FilenameWithoutPath>Data_deal.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>6</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\Dwin.c</PathWithFileName>
-      <FilenameWithoutPath>Dwin.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>7</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\Elec_Seal.c</PathWithFileName>
-      <FilenameWithoutPath>Elec_Seal.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>8</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\Randomcode.c</PathWithFileName>
-      <FilenameWithoutPath>Randomcode.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>9</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
       <PathWithFileName>..\Src\DS1302.c</PathWithFileName>
       <FilenameWithoutPath>DS1302.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
@@ -459,19 +373,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>10</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>../Src/main.c</PathWithFileName>
-      <FilenameWithoutPath>main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>11</FileNumber>
+      <FileNumber>2</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -483,7 +385,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>3</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -495,7 +397,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>4</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -507,7 +409,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>5</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -519,7 +421,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>6</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -531,7 +433,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>7</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -543,7 +445,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>8</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -555,7 +457,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>9</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -567,7 +469,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>10</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -579,7 +481,7 @@
     </File>
     <File>
       <GroupNumber>1</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>11</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -589,18 +491,6 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>21</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Src\md5c.c</PathWithFileName>
-      <FilenameWithoutPath>md5c.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
   </Group>
 
   <Group>
@@ -611,7 +501,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -623,7 +513,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -635,7 +525,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -647,7 +537,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -659,7 +549,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -671,7 +561,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -683,7 +573,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -695,7 +585,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -707,7 +597,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -719,7 +609,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -731,7 +621,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -743,7 +633,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -755,7 +645,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -767,7 +657,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -779,7 +669,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -791,7 +681,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -803,7 +693,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -815,7 +705,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -829,13 +719,13 @@
 
   <Group>
     <GroupName>Application/MDK-ARM</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -855,7 +745,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -867,7 +757,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -879,7 +769,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -891,7 +781,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -903,7 +793,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -915,7 +805,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -927,7 +817,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -939,7 +829,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -951,7 +841,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -965,13 +855,13 @@
 
   <Group>
     <GroupName>Drivers/CMSIS</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -985,13 +875,13 @@
 
   <Group>
     <GroupName>IAP</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1003,6 +893,150 @@
     </File>
   </Group>
 
+  <Group>
+    <GroupName>APP</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>42</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\Dwin.c</PathWithFileName>
+      <FilenameWithoutPath>Dwin.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>43</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\Elec_Seal.c</PathWithFileName>
+      <FilenameWithoutPath>Elec_Seal.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>44</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>../Src/main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>COMM</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>45</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\TerminalSlave485.c</PathWithFileName>
+      <FilenameWithoutPath>TerminalSlave485.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>46</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\KeySlave485.c</PathWithFileName>
+      <FilenameWithoutPath>KeySlave485.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>47</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\CollectMaster485.c</PathWithFileName>
+      <FilenameWithoutPath>CollectMaster485.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>48</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\ScreenMaster485.c</PathWithFileName>
+      <FilenameWithoutPath>ScreenMaster485.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>LIB</GroupName>
+    <tvExp>0</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>49</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\Data_deal.c</PathWithFileName>
+      <FilenameWithoutPath>Data_deal.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>50</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\Randomcode.c</PathWithFileName>
+      <FilenameWithoutPath>Randomcode.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>9</GroupNumber>
+      <FileNumber>51</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\md5c.c</PathWithFileName>
+      <FilenameWithoutPath>md5c.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
   <Group>
     <GroupName>::CMSIS</GroupName>
     <tvExp>0</tvExp>

+ 67 - 52
MDK-ARM/TestF7.uvprojx

@@ -17,8 +17,8 @@
         <TargetCommonOption>
           <Device>STM32F746VGTx</Device>
           <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F7xx_DFP.2.8.0</PackID>
-          <PackURL>http://www.keil.com/pack</PackURL>
+          <PackID>Keil.STM32F7xx_DFP.2.15.0</PackID>
+          <PackURL>https://www.keil.com/pack/</PackURL>
           <Cpu>IRAM(0x20000000-0x2004FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(12000000) FPU3(SFPU) CPUTYPE("Cortex-M7") ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
@@ -384,56 +384,11 @@
         <Group>
           <GroupName>Application/User</GroupName>
           <Files>
-            <File>
-              <FileName>TerminalSlave485.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\TerminalSlave485.c</FilePath>
-            </File>
-            <File>
-              <FileName>KeySlave485.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\KeySlave485.c</FilePath>
-            </File>
-            <File>
-              <FileName>CollectMaster485.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\CollectMaster485.c</FilePath>
-            </File>
-            <File>
-              <FileName>ScreenMaster485.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\ScreenMaster485.c</FilePath>
-            </File>
-            <File>
-              <FileName>Data_deal.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\Data_deal.c</FilePath>
-            </File>
-            <File>
-              <FileName>Dwin.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\Dwin.c</FilePath>
-            </File>
-            <File>
-              <FileName>Elec_Seal.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\Elec_Seal.c</FilePath>
-            </File>
-            <File>
-              <FileName>Randomcode.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\Randomcode.c</FilePath>
-            </File>
             <File>
               <FileName>DS1302.c</FileName>
               <FileType>1</FileType>
               <FilePath>..\Src\DS1302.c</FilePath>
             </File>
-            <File>
-              <FileName>main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>../Src/main.c</FilePath>
-            </File>
             <File>
               <FileName>gpio.c</FileName>
               <FileType>1</FileType>
@@ -484,11 +439,6 @@
               <FileType>1</FileType>
               <FilePath>..\Src\DS1302Drv.c</FilePath>
             </File>
-            <File>
-              <FileName>md5c.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Src\md5c.c</FilePath>
-            </File>
           </Files>
         </Group>
         <Group>
@@ -666,6 +616,71 @@
             </File>
           </Files>
         </Group>
+        <Group>
+          <GroupName>APP</GroupName>
+          <Files>
+            <File>
+              <FileName>Dwin.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\Dwin.c</FilePath>
+            </File>
+            <File>
+              <FileName>Elec_Seal.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\Elec_Seal.c</FilePath>
+            </File>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>../Src/main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>COMM</GroupName>
+          <Files>
+            <File>
+              <FileName>TerminalSlave485.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\TerminalSlave485.c</FilePath>
+            </File>
+            <File>
+              <FileName>KeySlave485.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\KeySlave485.c</FilePath>
+            </File>
+            <File>
+              <FileName>CollectMaster485.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\CollectMaster485.c</FilePath>
+            </File>
+            <File>
+              <FileName>ScreenMaster485.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\ScreenMaster485.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>LIB</GroupName>
+          <Files>
+            <File>
+              <FileName>Data_deal.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\Data_deal.c</FilePath>
+            </File>
+            <File>
+              <FileName>Randomcode.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\Randomcode.c</FilePath>
+            </File>
+            <File>
+              <FileName>md5c.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\md5c.c</FilePath>
+            </File>
+          </Files>
+        </Group>
         <Group>
           <GroupName>::CMSIS</GroupName>
         </Group>

+ 24 - 21
Src/CollectMaster485.c

@@ -488,7 +488,7 @@ uint16_t CheckInFrame_Collect485(uint16_t LenRx,uint16_t MsgID)
 			switch(TempData)
 			{////////switch(TempData)--역迦
 				case 0xA1://Read All Valve State 랫쳔榴檄   뒀랫솰꿎포   菌答랫
-					//CRC_data=CRC16_MODBUS(USART2_RX_BUF, 17+ 4);//dataLengthIn
+				{	//CRC_data=CRC16_MODBUS(USART2_RX_BUF, 17+ 4);//dataLengthIn
 					//__nop();
 				
 				 // LenRx_0xA1=LenRx;
@@ -538,12 +538,13 @@ uint16_t CheckInFrame_Collect485(uint16_t LenRx,uint16_t MsgID)
 					//	__nop();
 						
 					}
-					break;
+					}break;
 				case 0xA2://Read Needed Sensor Value
-					switch(USART2_RX_BUF[4])
+				{
+          switch(USART2_RX_BUF[4])
 					{
 						case 1://Press expressed volume   竟생  휭생    
-							//if(CRC_data==((USART2_RX_BUF[dataLengthIn+4]<<8)+USART2_RX_BUF[dataLengthIn+5]))
+						{	//if(CRC_data==((USART2_RX_BUF[dataLengthIn+4]<<8)+USART2_RX_BUF[dataLengthIn+5]))
 						//if(CRC_data==CRC_data02)
 							{
 								Stor[0].Volume=((USART2_RX_BUF[5]<<8)|USART2_RX_BUF[6]);
@@ -575,9 +576,9 @@ uint16_t CheckInFrame_Collect485(uint16_t LenRx,uint16_t MsgID)
 //								
 								
 							}
-							break;
+							}break;
 						case 2://yewei  捻貫
-							
+						{	
 						  // if(CRC_data==((USART2_RX_BUF[dataLengthIn+4]<<8)+USART2_RX_BUF[dataLengthIn+5]))
 							{
 								
@@ -640,9 +641,9 @@ uint16_t CheckInFrame_Collect485(uint16_t LenRx,uint16_t MsgID)
 							}
 							 
 							
-							break;
+							}break;
 						case 3://Temppreture  侊똑   侊똑눈먁포
-
+            {
 							//CRC_data=CRC16_MODBUS(USART2_RX_BUF, 16+5);//dataLengthIn
 							//if(CRC_data==((USART2_RX_BUF[21]<<8)+USART2_RX_BUF[22]))
 							//if(1)
@@ -774,9 +775,9 @@ uint16_t CheckInFrame_Collect485(uint16_t LenRx,uint16_t MsgID)
 							
 							
 						  
-							break;
+						}	break;
 						case 4://허실 실똑 
- 
+            {
 						
 						
 							Stor[0].QingJiao=(int16_t)(((USART2_RX_BUF[5]<<8)|USART2_RX_BUF[6]));
@@ -797,29 +798,31 @@ uint16_t CheckInFrame_Collect485(uint16_t LenRx,uint16_t MsgID)
 	 				
 						
 						
-			if((uni_QingJiao001.flo_Data>300)  || (uni_QingJiao001.flo_Data<-10))
-			{
-			
-			   ;//uni_QingJiao001.flo_Data=0.34;
-			}
+              if((uni_QingJiao001.flo_Data>300)  || (uni_QingJiao001.flo_Data<-10))
+              {
+              
+                 ;//uni_QingJiao001.flo_Data=0.34;
+              }
 							
-							break;
+						}break;
 						case 5://箕제
-							Stor[0].Temperature=Switch_Byte4_To_Float(USART2_RX_BUF+4);
+						{	
+              Stor[0].Temperature=Switch_Byte4_To_Float(USART2_RX_BUF+4);
 							Stor[1].Temperature=Switch_Byte4_To_Float(USART2_RX_BUF+8);
 							Stor[2].Temperature=Switch_Byte4_To_Float(USART2_RX_BUF+12);
 							Stor[3].Temperature=Switch_Byte4_To_Float(USART2_RX_BUF+16);
 						  uni_GasPressure001.flo_Data=Stor[0].Temperature;
 						
 						
-							break;
+						}break;
 						default:
 							break;
 					}
-					break;
+				}	break;
 				case 0xA3://Write StoreNum
-					Collect485.Write_StorNum=USART2_RX_BUF[4];
-					break;
+				{
+          Collect485.Write_StorNum=USART2_RX_BUF[4];
+					}break;
 				case 0xA4:
 					break;
 				case 0xA5:

+ 6 - 6
Src/DS1302.c

@@ -1,4 +1,4 @@
-#include "Data_deal.h"
+
 #include "DS1302.h"
 uint8_t time_buf[7]  = {0x20,0x20,0x05,0x29,0x17,0x20,0x14}; //初始时间2020年5月29号17点41分14秒 星期五
 
@@ -167,13 +167,13 @@ void ds1302_Write_Time(uint8_t *Time_buf)
 	      
 	ds1302_Write_Byte(ds1302_year_add,HEX2BCD(Time_buf[1]));		//年 
 	  
-	ds1302_Write_Byte(ds1302_month_add,HEX2BCD(Time_buf[2]));	//月 
+	ds1302_Write_Byte(ds1302_month_add,HEX2BCD(Time_buf[2]));		//月 
 	ds1302_Write_Byte(ds1302_date_add,HEX2BCD(Time_buf[3]));		//日 
 	ds1302_Write_Byte(ds1302_hr_add,HEX2BCD(Time_buf[4]));		  //时 
-	ds1302_Write_Byte(ds1302_min_add,HEX2BCD(Time_buf[5]));		//分
-	ds1302_Write_Byte(ds1302_sec_add,HEX2BCD(Time_buf[6]));		//秒
-	//ds1302_Write_Byte(ds1302_day_add,time_buf[7]);		//周 
-	ds1302_Write_Byte(ds1302_control_add,0x80);		    //打开写保护 
+	ds1302_Write_Byte(ds1302_min_add,HEX2BCD(Time_buf[5]));			//分
+	ds1302_Write_Byte(ds1302_sec_add,HEX2BCD(Time_buf[6]));			//秒
+	//ds1302_Write_Byte(ds1302_day_add,time_buf[7]);						//周 
+	ds1302_Write_Byte(ds1302_control_add,0x80);		    					//打开写保护 
 }
 
 //从DS302读出时钟数据

+ 16 - 8
Src/Dwin.c

@@ -458,12 +458,14 @@ void Go_homepage(void)
 	switch (all_Store)
 				{
 					case 1:
+					{
 						Jump_page_id(1);//泐善翋賜醱都寞1累
 						Run_mode_key_info.Main_Page_id =1;//袨怓賜醱
 						Run_mode_key_info.Full_oil_id = 10;//蚾蚐賜醱
 						Run_mode_key_info.offLoading_oil_id =19;//迠蚐賜醱
-						break;
+					}break;
 					case 2:
+					{
 //						if((StoreNumber == 1)&&Special_Stor)//泐善1累2裔((Config_info_all.ManHole_Big_info&0x0f)==0x02)
 //						{
 //							Jump_page_id(2);
@@ -478,43 +480,49 @@ void Go_homepage(void)
 							Run_mode_key_info.Full_oil_id = 12;
 							Run_mode_key_info.offLoading_oil_id =21;
 //						}
-						break;
+					}	break;
 					case 3:
+					{
 						Jump_page_id(4);
 						Run_mode_key_info.Main_Page_id =4;
 						Run_mode_key_info.Full_oil_id = 13;
 						Run_mode_key_info.offLoading_oil_id =22;
-						break;
+					}	break;
 					case 4:
+					{
 						Jump_page_id(5);
 						Run_mode_key_info.Main_Page_id =5;
 						Run_mode_key_info.Full_oil_id = 14;
 						Run_mode_key_info.offLoading_oil_id =23;
-						break;
+					}	break;
 					case 5:
+					{
 						Jump_page_id(6);
 						 Run_mode_key_info.Main_Page_id =6;
 						Run_mode_key_info.Full_oil_id = 15;
 						Run_mode_key_info.offLoading_oil_id =24;
-						break;
+					}	break;
 					case 6:
+					{
 						Jump_page_id(7);
 						Run_mode_key_info.Main_Page_id =7;
 						Run_mode_key_info.Full_oil_id = 16;
 						Run_mode_key_info.offLoading_oil_id =25;
-						break;
+					}break;
 					case 7:
+					{
 						Jump_page_id(8);
 						Run_mode_key_info.Main_Page_id =8;
 						Run_mode_key_info.Full_oil_id = 17;
 						Run_mode_key_info.offLoading_oil_id =26;
-						break;
+					}break;
 					case 8:
+					{
 						Jump_page_id(9);
 						Run_mode_key_info.Main_Page_id =9;
 						Run_mode_key_info.Full_oil_id = 18;
 						Run_mode_key_info.offLoading_oil_id =27;
-						break;
+					}break;
 					default:break;
 				}
 				Run_mode_key_info.Liquid_id = 54;

+ 12 - 12
Src/KeySlave485.c

@@ -39,14 +39,14 @@ uint8_t product_ID[20] = "20210730001";						 //
 char Version_software[30] = "KZB09A0_20220210_Temp1";
 uint32_t Version_Soft[8] = {2,2,3,13,1,1,0,20220810};
 
-uint8_t flag_exitReset = 0;	 //终止复位命令
-uint8_t flag_Uart4_Busy = 0; //表明打印机占用了总线,暂停语音播报
+uint8_t flag_exitReset = 0;	              //终止复位命令
+uint8_t flag_Uart4_Busy = 0;              //表明打印机占用了总线,暂停语音播报
 
-uint8_t flag_Sw_VoicePlay = 1; //表明默认上电时启用语音播报
+uint8_t flag_Sw_VoicePlay = 1;            //表明默认上电时启用语音播报
 
-uint8_t flag_ShowValveRaw = 0;		   //默认显示打开、关闭、异常等汉字信息
-uint8_t flag_Sw_DisplaySensorData = 1; //默认不显示模拟量类传感器信息数据
-uint8_t flag_En_BlankSeal = 0;		   //0表明默认上电禁止空仓施封  1=允许空仓施封
+uint8_t flag_ShowValveRaw = 0;		        //默认显示打开、关闭、异常等汉字信息
+uint8_t flag_Sw_DisplaySensorData = 1;    //默认不显示模拟量类传感器信息数据
+uint8_t flag_En_BlankSeal = 0;		        //0表明默认上电禁止空仓施封  1=允许空仓施封
 
 uint8_t flag_Sw_DispSysInfo = 1; //表明默认上电显示系统信息否 1=显示    0=不显示
 
@@ -656,7 +656,7 @@ void Mode_key_pageID(void)
 			switch (Run_mode_key_info.key)
 			{
 
-			case 0x1b: //F1
+			case Key_F1: //F1
 				if (Full_Oil_allinfo.Start_Decrease_flag == 0)
 				{
 					Jump_page_id(Run_mode_key_info.Full_oil_id); //进入装油界面
@@ -859,7 +859,7 @@ void Mode_key_pageID(void)
 
 		else if (Run_mode_key_info.current_page == Run_mode_key_info.Full_oil_id)
 		{ //如果是装油界面
-			if (Run_mode_key_info.key == 0x1b)
+			if (Run_mode_key_info.key == Key_F1)
 			{
 				if (Full_Oil_allinfo.Real_operation_ID == 0) //没有装油操作,标志清零
 					Full_Oil_allinfo.Start_Full_flag = 0;
@@ -891,7 +891,7 @@ void Mode_key_pageID(void)
 		}
 		else if (Run_mode_key_info.current_page == Run_mode_key_info.offLoading_oil_id)
 		{ //卸油界面
-			if (Run_mode_key_info.key == 0x1b)
+			if (Run_mode_key_info.key == Key_F1)
 			{
 				Jump_page_id(Run_mode_key_info.Main_Page_id);
 			}
@@ -960,7 +960,7 @@ void Mode_key_pageID(void)
 			{
 				switch (Run_mode_key_info.key)
 				{
-				case 0x1b: //F1
+				case Key_F1: //F1
 					memset(Input_date, 0, 20);
 					Set_Select_flag = 0;
 					Jump_page_id(Run_mode_key_info.Main_Page_id);
@@ -990,7 +990,7 @@ void Mode_key_pageID(void)
 				uint8_t i = 0;
 				switch (Run_mode_key_info.key)
 				{
-				case 0x1b: //F1
+				case Key_F1: //F1
 					memset(Input_date, 0, 20);
 					Set_Select_flag = 0;
 					Jump_page_id(Run_mode_key_info.Main_Page_id);
@@ -1068,7 +1068,7 @@ void Mode_key_pageID(void)
 				uint8_t i = 0;
 				switch (Run_mode_key_info.key)
 				{
-				case 0x1b: //F1
+				case Key_F1: //F1
 					memset(Input_date, 0, 20);
 					Jump_page_id(Run_mode_key_info.Main_Page_id);
 					break;

+ 3 - 2
Src/LTF_sa/leaf_ota.c

@@ -325,7 +325,7 @@ void MoveCode(unsigned int src_addr, unsigned int des_addr, unsigned int byte_si
 *	·µ »Ø Öµ: ÎÞ
 *********************************************************************************************************
 */
-static void JumpToBootloader(void)
+void JumpToBootloader(void)
 {
 	uint32_t i=0;
 	GPIO_InitTypeDef GPIO_InitStruct = {0};
@@ -462,7 +462,8 @@ void Start_BootLoader(void)
 					all_len |= *(unsigned char *)(StartMode_Addr + 68 + i);
 				}
 				if(App2_MD5_Check(Application_2_Addr,all_len))
-					JumpToAPP2();//*/
+					JumpToAPP2();//
+				*/
 			}
 		//	break;
 		}

+ 1 - 0
Src/LTF_sa/leaf_ota.h

@@ -51,5 +51,6 @@
 void Start_BootLoader(void);
 uint8_t Erase_page(uint32_t pageaddr, uint32_t num);
 void WriteFlash2(uint32_t addr, uint32_t *buff, int word_size);
+void JumpToBootloader(void);
 #endif
 

+ 4 - 2
Src/ScreenMaster485.c

@@ -1,3 +1,4 @@
+#include <string.h>
 #include "ScreenMaster485.h"
 #include "usart.h"			
 #include "Dwin.h"
@@ -21,12 +22,13 @@ uint8_t screen_buf[512];
 volatile uint8_t screen_delay=0;
 void ScreenMaster485_Send_Data(uint8_t *buf,uint8_t len)
 {
-	int retry;
+	//int retry;
 	
 	do
 	{
 		osDelay(1);
 	}while(huart3.gState != HAL_UART_STATE_READY);
+	
 	do
 	{
 		osDelay(1);
@@ -34,7 +36,7 @@ void ScreenMaster485_Send_Data(uint8_t *buf,uint8_t len)
 	usart3_rx_flag=0;
 	ScreenMaster485_TX_Set(1);			//设置为发送模式
   //	HAL_UART_Transmit(&huart3,buf,len,200);//串口3发送数据  
-	memcpy(screen_buf,buf,len);
+	memcpy((void *)screen_buf,(void *)buf,(size_t)len);
 	if(HAL_UART_Transmit_IT(&huart3,screen_buf,len)!=HAL_OK)
 	{
 		ScreenMaster485_TX_Set(0);			//设置为接收模式	

+ 120 - 101
Src/TerminalSlave485.c

@@ -84,7 +84,8 @@ sT2C_SealByElec_Fence *pT2C_SealByElec_Fence = &T2C_SealByElec_Fence001;
  
  //============================================================
 sT2C_SetupData T2C_SetupData[8]  =
-{{
+{
+{
    2021,
 	 1,
 	 25,
@@ -494,6 +495,9 @@ uint32_t Read_update_sum =0;
 //Data_frame data_frame,Tx_data_frame;
 Data_frame_TypeDef data_frame,Tx_data_frame;
 
+int32_t WholeCarData(uint8_t *buf);
+int32_t StoreData(uint8_t *buf,int storeNo);
+
 void Reboot_System()
 {
 	 __set_FAULTMASK(1);
@@ -509,7 +513,7 @@ void Reboot_System()
 int Flash_MD5_Check(uint32_t addr,uint32_t len)
 {
 	unsigned char digest[16];
-	unsigned char *md5_ptr=(unsigned char *)(StartMode_Addr+72);
+//	unsigned char *md5_ptr=(unsigned char *)(StartMode_Addr+72);
 	unsigned int i,update_len;
 	MD5_CTX md5c;
 	MD5Init(&md5c);
@@ -706,14 +710,14 @@ uint8_t ERR_Arr[8]="error";
 uint8_t upgrade_type=0;
 
 extern void Set_Update_Down(void);
-int AsciitoHexF3(char *buf,int len)
+int AsciitoHexF3(uint8_t *buf,int len)
 {
 	int i;
 	uint8_t Lrc_temp;
 	FileBuffArray[0]=':';
 	for(i=0;i<len;++i)
 	{
-		sprintf(FileBuffArray+1+2*i,"%02X",buf[i]);
+		sprintf((char *)FileBuffArray+1+2*i,"%02X",buf[i]);
 	}
 	Lrc_temp = MODBUS_ASCII_GetLrc(FileBuffArray + 1, len * 2);
 	sprintf((char *)(&FileBuffArray[1 + len * 2]), "%02X", Lrc_temp);
@@ -784,7 +788,7 @@ int Process_CMD_IAP_Update(void)
 
 				if(crcIAP==crcTerminal)
 				{
-					if(strstr(USART1_RX_BUF+9,"kzb")==NULL)
+					if(strstr((char *)USART1_RX_BUF+9,"kzb")==NULL)
 					{
 						upgrade_type=2;
 						return upgrade_type;
@@ -809,17 +813,18 @@ int Process_CMD_IAP_Update(void)
 					}
 					HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_2);//看门狗sp706
 					
-					txLen = sprintf(USART1_TX_BUF,"file=%d\r\n",packIndexbak);
+					txLen = sprintf((char *)USART1_TX_BUF,"file=%d\r\n",packIndexbak);
 				}
 				else
 				{
-					sprintf(USART1_TX_BUF,"%s",ERR_Arr);
+					sprintf((char *)USART1_TX_BUF,"%s",ERR_Arr);
 				}
 			}
 				
   		break;
   	case 0x02://有效载荷帧数据处理
-				crcIAP=CRC16_MODBUS(&USART1_RX_BUF[4], lenRx1-10);//  
+    {	
+      crcIAP=CRC16_MODBUS(&USART1_RX_BUF[4], lenRx1-10);//  
 				
 				crcTerminal=(USART1_RX_BUF[lenRx1-5]<<8) +USART1_RX_BUF[lenRx1-6];
 				if(crcIAP==crcTerminal && upgrade_type==2)
@@ -850,22 +855,22 @@ int Process_CMD_IAP_Update(void)
 						if((packIndexbak+1)==packIndex)
 							AddrToWrite += lenRx1-15;
 						packIndexbak=packIndex;
-						txLen = sprintf(USART1_TX_BUF,"%s=%d\r\n",ACK_Arr,packIndex);
+						txLen = sprintf((char *)USART1_TX_BUF,"%s=%d\r\n",ACK_Arr,packIndex);
 					}
 					else
 					{
 						DataReadFlash=*((__IO uint32_t*)(StartMode_Addr));
-  						txLen = sprintf(USART1_TX_BUF,"%s=%d\r\n",ERR_Arr,packIndex);
+  						txLen = sprintf((char *)USART1_TX_BUF,"%s=%d\r\n",ERR_Arr,packIndex);
 						Erase_page(StartMode_Addr, 128);
 						WriteFlash2(StartMode_Addr,&DataReadFlash,1);
 					}
 				}
 				else
 				{
-					txLen = sprintf(USART1_TX_BUF,"Rx Error lenRx1=%d crcIAP=%04X crcTerminal=%04X\r\n",lenRx1,crcIAP,crcTerminal);
+					txLen = sprintf((char *)USART1_TX_BUF,"Rx Error lenRx1=%d crcIAP=%04X crcTerminal=%04X\r\n",lenRx1,crcIAP,crcTerminal);
 				}			
 		
-  		break;
+  	}	break;
 	case 3:
 			//if(packIndex>2)
 			{//结束帧处理
@@ -880,7 +885,7 @@ int Process_CMD_IAP_Update(void)
 					{
 						return upgrade_type;
 					}
-					txLen = sprintf(USART1_TX_BUF,"%s\r\n",ACK_Arr);
+					txLen = sprintf((char *)USART1_TX_BUF,"%s\r\n",ACK_Arr);
 					if(f3_flag)
 						txLen = AsciitoHexF3(USART1_TX_BUF, txLen);
 	  				TerminalSlave485_Send_Data(USART1_TX_BUF, txLen);
@@ -893,22 +898,22 @@ int Process_CMD_IAP_Update(void)
 					
 					if(Flash_MD5_Check(ADDR_FLASH_SECTOR_7,all_len)==0)
 					{
-						txLen = sprintf(USART1_TX_BUF,"md5 check=error\r\n");
+						txLen = sprintf((char *)USART1_TX_BUF,"md5 check=error\r\n");
 					}
 					else
 					{
 						if(strcmp(custurm_code,(const char*)Application_Buffer_Addr+5120))
 						{
-							txLen = sprintf(USART1_TX_BUF,"Product=error\r\n");
+							txLen = sprintf((char *)USART1_TX_BUF,"Product=error\r\n");
 						}	
 						else if((*(unsigned int*)(Application_Buffer_Addr+6144)!=Application_2_Addr) && (*(unsigned int*)(Application_Buffer_Addr+4)&0xffff0000 != Application_2_Addr))
 						{
-							txLen = sprintf(USART1_TX_BUF,"Link addr=error\r\n");
+							txLen = sprintf((char *)USART1_TX_BUF,"Link addr=error\r\n");
 						}
 						else
 						{
 							Set_Update_Down();//设定标志位  下次启动时进行程序拷贝
-							txLen = sprintf(USART1_TX_BUF,"md5 check=ok\r\n");
+							txLen = sprintf((char *)USART1_TX_BUF,"md5 check=ok\r\n");
 							should_reboot=1;
 						}
 					}
@@ -916,7 +921,7 @@ int Process_CMD_IAP_Update(void)
 				}
 				else
 				{
-					txLen = sprintf(USART1_TX_BUF,"%s\r\n",ERR_Arr);		
+					txLen = sprintf((char *)USART1_TX_BUF,"%s\r\n",ERR_Arr);		
 				}		
 			}
 			break;
@@ -957,11 +962,11 @@ void Send_A1_Cmd(unsigned char scrAddr, unsigned char funCode, unsigned char scr
 	int i,j;
 	unsigned char temp_i = 0x00;
 	USART1_TX_BUF[send_pos++]=':';
-	sprintf(USART1_TX_BUF+send_pos,"%02X",0xA1);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",0xA1);
 	send_pos+=2;
-	sprintf(USART1_TX_BUF+send_pos,"%02X",0x04);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",0x04);
 	send_pos+=2;
-	sprintf(USART1_TX_BUF+send_pos,"%02X",120);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",120);
 	send_pos+=2;
 	if(StoreNumber>0)
 	{
@@ -1009,63 +1014,63 @@ void Send_A1_Cmd(unsigned char scrAddr, unsigned char funCode, unsigned char scr
 		emergy=0x80;	
 	}
 	overflow_flag_bak=overflow_flag;
-	sprintf(USART1_TX_BUF+send_pos,"%02X",emergy);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",emergy);
 	send_pos+=2;
-	sprintf(USART1_TX_BUF+send_pos,"%02X",StoreNumber);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",StoreNumber);
 	send_pos+=2;
-	sprintf(USART1_TX_BUF+send_pos,"%02X",0x22);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",0x22);
 	send_pos+=2;
 	
-	sprintf(USART1_TX_BUF+send_pos,"%02X",overflow_flag);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",overflow_flag);
 	send_pos+=2;
 	if((Config_info_all.ManHole_Big_info>0) && (Config_info_all.ManHole_Big_info<8))
 	{
-		sprintf(USART1_TX_BUF+send_pos,"%02X",0x72);
+		sprintf((char *)USART1_TX_BUF+send_pos,"%02X",0x72);
 		send_pos+=2;
 		for (i = 0; i < StoreNumber; i++)
 		{
-			sprintf(USART1_TX_BUF+send_pos,"%02X",Config_info_all.ManHole_Big_info/StoreNumber);
+			sprintf((char *)USART1_TX_BUF+send_pos,"%02X",Config_info_all.ManHole_Big_info/StoreNumber);
 			send_pos+=2;
 			for(j=0;j<Config_info_all.ManHole_Big_info/StoreNumber;++j)
 			{
-				sprintf(USART1_TX_BUF+send_pos,"%02X",Cang_IO_tbak[i][indexDaGai01+10*j]);
+				sprintf((char *)USART1_TX_BUF+send_pos,"%02X",Cang_IO_tbak[i][indexDaGai01+10*j]);
 				send_pos+=2;
 			}
 		}
 	}
 	if((Config_info_all.Dump_info>0) && (Config_info_all.Dump_info<8))
 	{
-		sprintf(USART1_TX_BUF+send_pos,"%02X",0x71);
+		sprintf((char *)USART1_TX_BUF+send_pos,"%02X",0x71);
 		send_pos+=2;
 		for (i = 0; i < StoreNumber; i++)
 		{
-			sprintf(USART1_TX_BUF+send_pos,"%02X",Config_info_all.Dump_info/StoreNumber);
+			sprintf((char *)USART1_TX_BUF+send_pos,"%02X",Config_info_all.Dump_info/StoreNumber);
 			send_pos+=2;
 			for(j=0;j<Config_info_all.Dump_info/StoreNumber;++j)
 			{
-				sprintf(USART1_TX_BUF+send_pos,"%02X",Cang_IO_tbak[i][indexXieYouFa01+10*j]);
+				sprintf((char *)USART1_TX_BUF+send_pos,"%02X",Cang_IO_tbak[i][indexXieYouFa01+10*j]);
 				send_pos+=2;
 			}
 		}
 	}
 	if((Config_info_all.HaiDiFa_info>0) && (Config_info_all.HaiDiFa_info<8))
 	{
-		sprintf(USART1_TX_BUF+send_pos,"%02X",0x64);
+		sprintf((char *)USART1_TX_BUF+send_pos,"%02X",0x64);
 		send_pos+=2;
 		for (i = 0; i < StoreNumber; i++)
 		{
-			sprintf(USART1_TX_BUF+send_pos,"%02X",Config_info_all.HaiDiFa_info/StoreNumber);
+			sprintf((char *)USART1_TX_BUF+send_pos,"%02X",Config_info_all.HaiDiFa_info/StoreNumber);
 			send_pos+=2;
 			for(j=0;j<Config_info_all.HaiDiFa_info/StoreNumber;++j)
 			{
-				sprintf(USART1_TX_BUF+send_pos,"%02X",Cang_IO_tbak[i][indexHaiDiFa01+10*j]);
+				sprintf((char *)USART1_TX_BUF+send_pos,"%02X",Cang_IO_tbak[i][indexHaiDiFa01+10*j]);
 				send_pos+=2;
 			}
 		}
 	}
 	while (send_pos<(120*2+7))
 	{
-		sprintf(USART1_TX_BUF+send_pos,"%02X",0);
+		sprintf((char *)USART1_TX_BUF+send_pos,"%02X",0);
 		send_pos+=2;
 	}
 	//**********************************************
@@ -1075,7 +1080,7 @@ void Send_A1_Cmd(unsigned char scrAddr, unsigned char funCode, unsigned char scr
 		scrLength = 0x3C;
 	}
 	temp_i = scrLength<<1;
-	//sprintf(USART1_TX_BUF+5,"%02X",temp_i);
+	//sprintf((char *)USART1_TX_BUF+5,"%02X",temp_i);
 	USART1_TX_BUF[5] = (temp_i>>4) + '0';
 	if('9' < USART1_TX_BUF[5])
 	{
@@ -1090,7 +1095,7 @@ void Send_A1_Cmd(unsigned char scrAddr, unsigned char funCode, unsigned char scr
 	temp_i <<= 1;
 	
 	Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1, temp_i + 6);
-	sprintf(USART1_TX_BUF + temp_i + 7, "%02X", Lrc_temp);
+	sprintf((char *)USART1_TX_BUF + temp_i + 7, "%02X", Lrc_temp);
 	USART1_TX_BUF[temp_i + 9]  = 0x0D;
 	USART1_TX_BUF[temp_i + 10] = 0x0A;
 	TerminalSlave485_Send_Data(USART1_TX_BUF, temp_i + 11);
@@ -1098,7 +1103,7 @@ void Send_A1_Cmd(unsigned char scrAddr, unsigned char funCode, unsigned char scr
 	//***********************************************
 	/*
 	Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,send_pos-1);
-	sprintf(USART1_TX_BUF+send_pos,"%02X",Lrc_temp);
+	sprintf((char *)USART1_TX_BUF+send_pos,"%02X",Lrc_temp);
 	send_pos += 2;
 	USART1_TX_BUF[send_pos++] =0x0D;
 	USART1_TX_BUF[send_pos++] = 0x0A;
@@ -1112,7 +1117,8 @@ void Send_A1_Cmd(unsigned char scrAddr, unsigned char funCode, unsigned char scr
 //uint32_t re_count=0;
 void Data_analysis(void)
 {
-	uint32_t startBytes=0x00000000,tmpU32,update_flag;
+//	uint32_t startBytes=0x00000000;
+	uint32_t tmpU32,update_flag;
 	if(usart1_rx_flag==1)//接收完成
 	{
 		//data_count++;
@@ -2318,7 +2324,7 @@ int32_t Assamble_Frame(uint8_t *buf)
 	frame_buf->Time[4] = m_datetime.min;
 	frame_buf->Time[5] = m_datetime.sec;
 	memset(frame_buf->Frame_Head,0,16);
-	len = WholeCarData(frame_buf->Data);
+	len = WholeCarData((uint8_t *)frame_buf->Data);
 	for(storeNo=0;storeNo<StoreNumber;++storeNo)
 	{
 		lenstore = StoreData(frame_buf->Data+len,storeNo);
@@ -2352,7 +2358,8 @@ storeNo:
 int32_t StoreData(uint8_t *buf,int storeNo)
 {
 	int32_t ret=0;
-	int ptr,i;
+	//int ptr;
+	int i;
 	sT2C_ALL_Sensor_Data_Each_Cang *p_Sensor[8] = {&T2C_ALL_Sensor_Data01,&T2C_ALL_Sensor_Data02,
 	&T2C_ALL_Sensor_Data03,&T2C_ALL_Sensor_Data04,
 	&T2C_ALL_Sensor_Data05,&T2C_ALL_Sensor_Data06,
@@ -2428,7 +2435,7 @@ void FormatWholeCarData(void)
 	pT2C_ALL_Sensor_Data0x9b=&T2C_ALL_Sensor_WholeCar01;
 	
 	memcpy(&USART1_TX_BUF[1],&USART1_RX_BUF[1],4);
-	sprintf((char*)USART1_TX_BUF+5,"%02X",0x4a);//(16+4*33)/1
+	sprintf((char *)(char*)USART1_TX_BUF+5,"%02X",0x4a);//(16+4*33)/1
  	
 	memcpy(&USART1_TX_BUF[1+6],pT2C_ALL_Sensor_Data0x9b->FrameHead,16);
 	
@@ -2699,7 +2706,7 @@ sT2C_ALL_Sensor_Data_Each_Cang* pT2C_ALL_Sensor_Data0x93;
 
 	
 									memcpy(&USART1_TX_BUF[1],&USART1_RX_BUF[1],4);
-									sprintf((char*)USART1_TX_BUF+5,"%02X",0x4a);//(16+4*33)/1
+									sprintf((char *)(char*)USART1_TX_BUF+5,"%02X",0x4a);//(16+4*33)/1
 	
 	
 									memcpy(&USART1_TX_BUF[1+6],pT2C_ALL_Sensor_Data0x93->FrameHead,16);
@@ -2751,8 +2758,8 @@ sT2C_ALL_Sensor_Data_Each_Cang* pT2C_ALL_Sensor_Data0x93;
 									Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,154);//154
 									
 								  //USART1_TX_BUF[149+6]=Lrc_temp;
-									//sprintf(&USART1_TX_BUF[149+6],"%02X",Lrc_temp);
-									sprintf((char*)USART1_TX_BUF+149+6,"%02X",Lrc_temp);
+									//sprintf((char *)&USART1_TX_BUF[149+6],"%02X",Lrc_temp);
+									sprintf((char *)(char*)USART1_TX_BUF+149+6,"%02X",Lrc_temp);
 								  USART1_TX_BUF[LenthOf_Reply0x93-2]=0x0d;
 								  USART1_TX_BUF[LenthOf_Reply0x93-1]=0x0a;
 }
@@ -3518,7 +3525,7 @@ Return_data * IO_Tx_Readvalue(uint16_t ID,uint16_t length)//
 		 for(i=0;i<32;i++)
 	   {//0x91查询阀门状态指令      将二进制数据转换为ASCII 
  		 
-			 sprintf((char*)(temp_buf_Tx_Read+8+i*2),"%02X",Array_Of_Valve[i]);
+			 sprintf((char *)(char*)(temp_buf_Tx_Read+8+i*2),"%02X",Array_Of_Valve[i]);
       
 	   } 
 	#endif	
@@ -4762,10 +4769,10 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 
 				for(i000=0;i000<rx2_len;i000++)
 				{
-					sprintf((char*)&USART1_TX_BUF[1+i000*2],"%02X",USART2_RX_BUF[i000]);
+					sprintf((char *)(char*)&USART1_TX_BUF[1+i000*2],"%02X",USART2_RX_BUF[i000]);
 				}
 				Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,rx2_len*2);
-	 			sprintf((char*)(&USART1_TX_BUF[rx2_len*2+1]),"%02X",Lrc_temp);
+	 			sprintf((char *)(char*)(&USART1_TX_BUF[rx2_len*2+1]),"%02X",Lrc_temp);
 				USART1_TX_BUF[rx2_len*2+3]=0x0d;
 				USART1_TX_BUF[rx2_len*2+4]=0x0a;
 				TerminalSlave485_Send_Data(USART1_TX_BUF,rx2_len*2+5);
@@ -4782,13 +4789,13 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 								//memset(&USART1_TX_BUF[33],'A',sizeof(USART1_TX_BUF)-33);
 
 								//MODBUS_S8_to_ASCII(Lrc_temp,USART1_TX_BUF+Tx_data_frame.Frame_length+7);//56
-								//sprintf((char*)(&USART1_TX_BUF[128]),"%02X",Lrc_temp);
+								//sprintf((char *)(char*)(&USART1_TX_BUF[128]),"%02X",Lrc_temp);
 				//				USART1_TX_BUF[129] =0x0D;
 				//				USART1_TX_BUF[130] = 0x0A;
 								TerminalSlave485_Send_Data(USART1_TX_BUF,128+3);	
 						}
-						else
-						{//按照十六进制的方式回复
+          else
+          {//按照十六进制的方式回复
 //								Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,64);
 //								//memcpy(USART1_TX_BUF,temp_dataFromUsart1,16*2+1);//前16字节原样返回,共33字符 1表示起始字符英文下的冒号,hex为0x3a
 //								memcpy(USART1_TX_BUF,temp_dataFromUsart1,67+2);// 
@@ -4796,24 +4803,24 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 //								USART1_TX_BUF[68]=0x0A;
 //								TerminalSlave485_Send_Data(USART1_TX_BUF,69);
 //							
-							
-							//lenRx1
-								memcpy(USART1_TX_BUF,temp_dataFromUsart1,lenRx1+0);// 
+            
+            //lenRx1
+              memcpy(USART1_TX_BUF,temp_dataFromUsart1,lenRx1+0);// 
 //							  USART1_TX_BUF[67]=0x0D;
 //								USART1_TX_BUF[68]=0x0A;
-								TerminalSlave485_Send_Data(USART1_TX_BUF,lenRx1+0);
-							
-							
-								/*Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,64);
-								//张毅反应去掉开头的冒号0x3A,去掉结尾的校验2字节、0x0d0a
-								memcpy(USART1_TX_BUF,&temp_dataFromUsart1[1],64);// 
-
-								TerminalSlave485_Send_Data(USART1_TX_BUF,64);	*/
-
-								__NOP();
-						
-						
-						}
+              TerminalSlave485_Send_Data(USART1_TX_BUF,lenRx1+0);
+            
+            
+              /*Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,64);
+              //张毅反应去掉开头的冒号0x3A,去掉结尾的校验2字节、0x0d0a
+              memcpy(USART1_TX_BUF,&temp_dataFromUsart1[1],64);// 
+
+              TerminalSlave485_Send_Data(USART1_TX_BUF,64);	*/
+
+              __NOP();
+          
+          
+          }
 				
 
 				//memset(temp_dataFromUsart1,0,sizeof(temp_dataFromUsart1));//清零
@@ -4925,9 +4932,9 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 						
 						memcpy(USART1_TX_BUF,temp_dataFromUsart1,16*2+1);//前16字节原样返回,共33字符 1表示起始字符英文下的冒号,hex为0x3a
 						memset(&USART1_TX_BUF[33],'=',sizeof(USART1_TX_BUF)-33);
-						sprintf((char*)(&USART1_TX_BUF[33]),"System will reboot... %5d",cmd39Cnt);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33]),"System will reboot... %5d",cmd39Cnt);
 						Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,64);
-						sprintf((char*)(&USART1_TX_BUF[65]),"%02X",Lrc_temp);
+						sprintf((char *)(char*)(&USART1_TX_BUF[65]),"%02X",Lrc_temp);
 						USART1_TX_BUF[67] =0x0D;
 						USART1_TX_BUF[68] = 0x0A;
 						TerminalSlave485_Send_Data(USART1_TX_BUF,69);
@@ -4958,10 +4965,10 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				case	ADDR_VersionOf_Software:// 
 						//FM25L16B_Read_N_Bytes(ADDR_VersionOf_Software,T2C_RemoteCaliDat001.PayLoadData,32); 	
 						//memset(&USART1_TX_BUF[33],'=',sizeof(USART1_TX_BUF)-33);
-						//sprintf((char*)(&USART1_TX_BUF[33]),"%s\r\n",T2C_RemoteCaliDat001.PayLoadData);
+						//sprintf((char *)(char*)(&USART1_TX_BUF[33]),"%s\r\n",T2C_RemoteCaliDat001.PayLoadData);
 			 			// for(i000=0;i000<strlen(Version_software);++i000)
 						// {
-						// 	sprintf(USART1_TX_BUF+33+2*i000,"%02X",Version_software[i000]);
+						// 	sprintf((char *)USART1_TX_BUF+33+2*i000,"%02X",Version_software[i000]);
 						// }
 						//strcpy(T2C_RemoteCaliDat001.PayLoadData,Version_software);
 						//T2C_RemoteCaliDat001.NumberOfRegs = strlen(Version_software);
@@ -5045,7 +5052,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				default:
 
 					//memset(&USART1_TX_BUF[33], '=', sizeof(USART1_TX_BUF) - 33);
-					T2C_RemoteCaliDat001.NumberOfRegs=sprintf(T2C_RemoteCaliDat001.PayLoadData, "Read Address Error! %08X\r\n", T2C_RemoteCaliDat001.AddrRegStart);
+					T2C_RemoteCaliDat001.NumberOfRegs=sprintf((char *)T2C_RemoteCaliDat001.PayLoadData, "Read Address Error! %08X\r\n", T2C_RemoteCaliDat001.AddrRegStart);
 					break;
 				} //读取寄存器指令
 
@@ -5059,9 +5066,9 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
       	case ADDR_Restart_ContBoard: //控制板复位指令
 						memcpy(USART1_TX_BUF,temp_dataFromUsart1,16*2+1);//前16字节原样返回,共33字符 1表示起始字符英文下的冒号,hex为0x3a
 						memset(&USART1_TX_BUF[33],'=',sizeof(USART1_TX_BUF)-33);
-						sprintf((char*)(&USART1_TX_BUF[33]),"System will reboot... %5d",cmd39Cnt);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33]),"System will reboot... %5d",cmd39Cnt);
 						Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,64);
-						sprintf((char*)(&USART1_TX_BUF[65]),"%02X",Lrc_temp);
+						sprintf((char *)(char*)(&USART1_TX_BUF[65]),"%02X",Lrc_temp);
 						USART1_TX_BUF[67] =0x0D;
 						USART1_TX_BUF[68] = 0x0A;
 						TerminalSlave485_Send_Data(USART1_TX_BUF,69);
@@ -5076,7 +5083,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 					FM25L16B_WriteByte(ADDR_Extended_ContBoard+2,T2C_RemoteCaliDat001.PayLoadData[2]);
 					FM25L16B_WriteByte(ADDR_Extended_ContBoard+3,T2C_RemoteCaliDat001.PayLoadData[3]);
 					/*memset(&USART1_TX_BUF[33],'=',sizeof(USART1_TX_BUF)-33);
-					sprintf((char*)(&USART1_TX_BUF[33]),"%02X%02X%02X%02X",T2C_RemoteCaliDat001.PayLoadData[0],
+					sprintf((char *)(char*)(&USART1_TX_BUF[33]),"%02X%02X%02X%02X",T2C_RemoteCaliDat001.PayLoadData[0],
 								T2C_RemoteCaliDat001.PayLoadData[1],T2C_RemoteCaliDat001.PayLoadData[2],T2C_RemoteCaliDat001.PayLoadData[3]);
 					*/
 					break;
@@ -5091,7 +5098,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 
 					/*for(i001=0;i001<32;i001++)
 					{
-						sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
 					
 					}*/
 					
@@ -5114,7 +5121,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
  					FM25L16B_Write_N_Bytes(ADDR_DataSource_LiquidoMeter,T2C_RemoteCaliDat001.PayLoadData,4);	
 					for(i001=0;i001<4;i001++)
 					{
-						sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
 					
 					}				
 					
@@ -5134,7 +5141,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
  					FM25L16B_Write_N_Bytes(ADDR_DataSource_ElecSeal,T2C_RemoteCaliDat001.PayLoadData,4); 
 					/*for(i001=0;i001<4;i001++)
 					{
-						sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
 					
 					}		*/		
 					break;
@@ -5144,7 +5151,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
  					FM25L16B_Write_N_Bytes(ADDR_V20_Point,T2C_RemoteCaliDat001.PayLoadData,16); 
 					/*for(i001=0;i001<16;i001++)
 					{
-						sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
 					
 					}*/				
 					break;				
@@ -5155,7 +5162,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				
 				case ADDR_CarPlate_Number: //设定车牌号
 					memset(bufText01Password,0,sizeof(bufText01Password));
-					sprintf((char*)bufText01Password,"车牌号:%s AB\r\n",T2C_RemoteCaliDat001.PayLoadData);
+					sprintf((char *)(char*)bufText01Password,"车牌号:%s AB\r\n",T2C_RemoteCaliDat001.PayLoadData);
 					FunDebugCode=DebugFun_Show_Terminal;
 					memcpy(CarLicensePlate,T2C_RemoteCaliDat001.PayLoadData,16);//拷贝16字节的车牌号,格式如:新M56454				
 					//WriteCarLicensePlate();//保存车牌号
@@ -5163,7 +5170,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				
 					/*for(i001=0;i001<8;i001++)
 					{
-						sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
 					
 					}	*/	
 					break;
@@ -5171,7 +5178,8 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
  
 				
 				case	ADDR_Zero_Of_LiquidMeter://兼容8仓	液位计零点
- 					FM25L16B_Write_N_Bytes(ADDR_Zero_Of_LiquidMeter,T2C_RemoteCaliDat001.PayLoadData,32); 
+ 				{	
+					FM25L16B_Write_N_Bytes(ADDR_Zero_Of_LiquidMeter,T2C_RemoteCaliDat001.PayLoadData,32); 
 				  //解析8个浮点数数据
 					for(i001=0;i001<8;i001++)
 					{
@@ -5187,9 +5195,10 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 					//数据回读
 					FM25L16B_Read_N_Bytes(ADDR_Zero_Of_LiquidMeter,T2C_RemoteCaliDat001.PayLoadData,32);
 					T2C_RemoteCaliDat001.NumberOfRegs=32;			
-      				break;
+      	}break;
 				case	ADDR_Zero_Of_TankCapacity://兼容8仓	罐容Vt零点
- 					FM25L16B_Write_N_Bytes(ADDR_Zero_Of_TankCapacity,T2C_RemoteCaliDat001.PayLoadData,32); 
+ 				{	
+					FM25L16B_Write_N_Bytes(ADDR_Zero_Of_TankCapacity,T2C_RemoteCaliDat001.PayLoadData,32); 
 					//解析8个浮点数数据
 					for(i001=0;i001<8;i001++)
 					{
@@ -5206,9 +5215,9 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 					//数据回读
 					FM25L16B_Read_N_Bytes(ADDR_Zero_Of_LiquidMeter,T2C_RemoteCaliDat001.PayLoadData,32);
 			 		T2C_RemoteCaliDat001.NumberOfRegs=32;			
-					break;
+				}	break;
 				case	ADDR_ManHoLe_Number://人孔盖卸油阀数量
-					
+				{
 					//解析8个浮点数数据
 					for(i001=0;i001<8;i001++)
 					{
@@ -5269,7 +5278,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
  					//FM25L16B_Write_N_Bytes(ADDR_ManHoLe_Number,T2C_RemoteCaliDat001.PayLoadData,32); 
 					/*for(i001=0;i001<64;i001++)
 					{
-						sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
 					
 					}			*/
 					FM25L16B_Read_N_Bytes(ADDR_StoreNumber,T2C_RemoteCaliDat001.PayLoadData,1); 
@@ -5279,7 +5288,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 					FM25L16B_Read_N_Bytes(ADDR_Foot_info,T2C_RemoteCaliDat001.PayLoadData+4,1);
 					T2C_RemoteCaliDat001.NumberOfRegs = 5;
  			
-      		break;
+      	}break;
 					
 				case	ADDR_Enable_ReSeal://是否允许重复施封 断电保存 
           //解析8个浮点数数据----合法的取值只有两种0,1
@@ -5379,10 +5388,19 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				  memcpy(&time_Set_Dwin[8],T2C_RemoteCaliDat001.PayLoadData,6);
 				  ScreenMaster485_Send_Data(time_Set_Dwin,14);
 					//memcpy(TimeBuf+1,T2C_RemoteCaliDat001.PayLoadData,6);
+#if	0
 					ds1302_Write_Time(T2C_RemoteCaliDat001.PayLoadData-1);
+#else
+					uint8_t Time_buf[16];
+					memset(Time_buf,0x00,sizeof(Time_buf));
+					memcpy((void*)&Time_buf[1],(void*)T2C_RemoteCaliDat001.PayLoadData,sizeof(Time_buf) - 1);
+					ds1302_Write_Time(Time_buf);
+#endif
+					
+					
 					/*for(i001=0;i001<6;i001++)
 					{
-						sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
+						sprintf((char *)(char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
 					
 					}*/
 					T2C_RemoteCaliDat001.NumberOfRegs = 6;
@@ -5400,24 +5418,24 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				case	ADDR_Unique_ID_ContBoard:// 
  					FM25L16B_Write_N_Bytes(ADDR_Unique_ID_ContBoard,T2C_RemoteCaliDat001.PayLoadData,16); 	
 					FM25L16B_Read_N_Bytes(ADDR_Unique_ID_ContBoard,T2C_RemoteCaliDat001.PayLoadData,16); 
-					T2C_RemoteCaliDat001.NumberOfRegs=sprintf(T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
+					T2C_RemoteCaliDat001.NumberOfRegs=sprintf((char *)T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
       		break;
 				/*case	ADDR_VersionOf_Software:// 
  					FM25L16B_Write_N_Bytes(ADDR_VersionOf_Software,T2C_RemoteCaliDat001.PayLoadData,32); 	
 					FM25L16B_Read_N_Bytes(ADDR_VersionOf_Software,T2C_RemoteCaliDat001.PayLoadData,32); 
-					T2C_RemoteCaliDat001.NumberOfRegs=sprintf(T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
+					T2C_RemoteCaliDat001.NumberOfRegs=sprintf((char *)T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
       		break;*/
 				
 				case	ADDR_VersionOf_Hardware:// 
  					FM25L16B_Write_N_Bytes(ADDR_VersionOf_Hardware,T2C_RemoteCaliDat001.PayLoadData,32); 
 					FM25L16B_Read_N_Bytes(ADDR_VersionOf_Hardware,T2C_RemoteCaliDat001.PayLoadData,32); 
-					T2C_RemoteCaliDat001.NumberOfRegs=sprintf(T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
+					T2C_RemoteCaliDat001.NumberOfRegs=sprintf((char *)T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
 	   
       		break;
 				case	ADDR_VersionOf_LCD:// 
  					FM25L16B_Write_N_Bytes(ADDR_VersionOf_LCD,T2C_RemoteCaliDat001.PayLoadData,32); 
 					FM25L16B_Read_N_Bytes(ADDR_VersionOf_LCD,T2C_RemoteCaliDat001.PayLoadData,32); 
-					T2C_RemoteCaliDat001.NumberOfRegs=sprintf(T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
+					T2C_RemoteCaliDat001.NumberOfRegs=sprintf((char *)T2C_RemoteCaliDat001.PayLoadData,"%s",T2C_RemoteCaliDat001.PayLoadData);
 	   
       		break;
 				
@@ -5432,14 +5450,14 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				
 				case	ADDR_Sw_VoicePlay://远程切换语音播报 
 					FunDebugCode=DebugFun_Sw_VoicePlay;
-					//sprintf((char*)(&USART1_TX_BUF[33]),"%s\r\n",T2C_RemoteCaliDat001.PayLoadData);
-					T2C_RemoteCaliDat001.NumberOfRegs=sprintf(T2C_RemoteCaliDat001.PayLoadData,"%8u",DebugFun_Sw_VoicePlay);
+					//sprintf((char *)(char*)(&USART1_TX_BUF[33]),"%s\r\n",T2C_RemoteCaliDat001.PayLoadData);
+					T2C_RemoteCaliDat001.NumberOfRegs=sprintf((char *)T2C_RemoteCaliDat001.PayLoadData,"%8u",DebugFun_Sw_VoicePlay);
 	   
       				break;				
 				
 				case	ADDR_Sw_ValveRaw://远程屏幕显示阀门原始数据或者汉字信息 
 					FunDebugCode=DebugFun_Sw_ValveRaw;
-					T2C_RemoteCaliDat001.NumberOfRegs=sprintf(T2C_RemoteCaliDat001.PayLoadData,"%8u",DebugFun_Sw_ValveRaw);
+					T2C_RemoteCaliDat001.NumberOfRegs=sprintf((char *)T2C_RemoteCaliDat001.PayLoadData,"%8u",DebugFun_Sw_ValveRaw);
       				break;
 
 				case ADDR_Reserve002_ContBoard: //远程设定控制板数据用于测试
@@ -5482,6 +5500,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 					T2C_RemoteCaliDat001.NumberOfRegs = 44;
 					break;
 				case ADDR_USART1_RE_TIMEOUT:
+				{
 					for (i001 = 0; i001 < 1; i001++)
 					{
 						//下边4行代码顺序是反的   终端发过来的数据为1=0x3f800000
@@ -5501,7 +5520,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 					}
 					FM25L16B_Write_N_Bytes(ADDR_USART1_RE_TIMEOUT, T2C_RemoteCaliDat001.PayLoadData, 4);
 					T2C_RemoteCaliDat001.NumberOfRegs = 4;
-					break;
+				}break;
 				case ADDR_DISP_VT_TYPE:
 					vt_disp_type = T2C_RemoteCaliDat001.PayLoadData[0];
 					FM25L16B_Write_N_Bytes(ADDR_DISP_VT_TYPE, T2C_RemoteCaliDat001.PayLoadData, 1);
@@ -5513,13 +5532,13 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 					T2C_RemoteCaliDat001.NumberOfRegs = 1;
 					break;
 				default:
-					T2C_RemoteCaliDat001.NumberOfRegs = sprintf(T2C_RemoteCaliDat001.PayLoadData, "Write Address Error! %08X\r\n", T2C_RemoteCaliDat001.AddrRegStart);
+					T2C_RemoteCaliDat001.NumberOfRegs = sprintf((char *)T2C_RemoteCaliDat001.PayLoadData, "Write Address Error! %08X\r\n", T2C_RemoteCaliDat001.AddrRegStart);
 					break;
 	  }
 		}//写入寄存器指令----结束
 		else
 		{
-			T2C_RemoteCaliDat001.NumberOfRegs = sprintf(T2C_RemoteCaliDat001.PayLoadData,"Modbus Command Error! %08X\r\n",T2C_RemoteCaliDat001.FunctionCode);
+			T2C_RemoteCaliDat001.NumberOfRegs = sprintf((char *)T2C_RemoteCaliDat001.PayLoadData,"Modbus Command Error! %08X\r\n",T2C_RemoteCaliDat001.FunctionCode);
 		}
 		
 		
@@ -5528,7 +5547,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 			{//ASCII模式下,只发送64*2+3字节	
 					memcpy(USART1_TX_BUF,temp_dataFromUsart1,16*2+1);//前16字节原样返回,共33字符 1表示起始字符英文下的冒号,hex为0x3a 
 					Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,T2C_RemoteCaliDat001.NumberOfRegs);
-					sprintf((char*)(&USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs*2+33]),"%02X",Lrc_temp);
+					sprintf((char *)(char*)(&USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs*2+33]),"%02X",Lrc_temp);
 					USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs*2+35] =0x0D;
 					USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs*2+36] = 0x0A;
 					TerminalSlave485_Send_Data(USART1_TX_BUF,T2C_RemoteCaliDat001.NumberOfRegs*2+37);
@@ -5539,7 +5558,7 @@ int 	Process_CMD_0x39_RemoteCali(uint8_t dataMode)
 				
 					memcpy(USART1_TX_BUF,temp_dataFromUsart1,16*1+1);//前16字节原样返回,共33字符 1表示起始字符英文下的冒号,hex为0x3a 
 					Lrc_temp = MODBUS_GetLrc(USART1_TX_BUF+1,T2C_RemoteCaliDat001.NumberOfRegs);
-					sprintf((char*)(&USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs+1]),"%02X",Lrc_temp);
+					sprintf((char *)(char*)(&USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs+1]),"%02X",Lrc_temp);
 					USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs+3] =0x0D;
 					USART1_TX_BUF[T2C_RemoteCaliDat001.NumberOfRegs+4] = 0x0A;
 					TerminalSlave485_Send_Data(USART1_TX_BUF,T2C_RemoteCaliDat001.NumberOfRegs+5);//64+3

+ 82 - 75
Src/freertos.c

@@ -620,7 +620,8 @@ extern uint8_t flag_Sw_DisplaySensorData;
 void Task_Usart3_LCD_Update(void const *argument)
 {
 	uint16_t i00task_usart3 = 0; //,i002=0;
-	int i001_DataTask, Len000;
+	
+	int Len000;
 
 	/* USER CODE BEGIN Task_Usart3_LCD_Update */
 	ControllerConfig_Init();
@@ -687,6 +688,7 @@ void Task_Usart3_LCD_Update(void const *argument)
 	else
 	{
 #if 0		
+		int i001_DataTask;
 		for (i001_DataTask = 0; i001_DataTask < 3; i001_DataTask++)
 		{
 			bufText01Password[0] = 0xff00; //隐藏文本命令
@@ -777,7 +779,7 @@ void Task_Usart3_LCD_Update(void const *argument)
 	//56454的车默认p3=3;54021的车默认p3=1;
 	pT2C_SetupData->Reserved_parameters_3 = 1.0f; //温度传感器取第1个点的温度
 	i00task_usart3=5;
-	Full_Oil_allinfo.Car_state_disp=-1;
+	Full_Oil_allinfo.Car_state_disp=0xff;
 	Jump_page_id(Run_mode_key_info.current_page);
 	/* Infinite loop */
 	while (1)
@@ -980,7 +982,7 @@ SDateTime m_datetime;
 void Task_GetCPU_Usage(void const *argument)
 {
 	/* USER CODE BEGIN Task_GetCPU_Usage */
-	char min=-1;
+	char min=0xff;
 	int count;
 	int i_task01;
 	EventBits_t uxBits;
@@ -2375,7 +2377,8 @@ void DisplayRunInfo(uint32_t FunDebugCode000)
 void DisplayValveInfo(void)
 {
 	//int i000;
-	int Len000Valve, Len002, Len003;
+//	int Len000Valve;
+	int Len002, Len003;
 
 	if (DebugFun__Restart_ContBoard01 != FunDebugCode) //只要不是重启命令就定时刷新屏幕信息
 	{												   //显示阀门开关信息--开始
@@ -2863,10 +2866,11 @@ int formatStr(uint16_t *bufTextCang02_IO000, uint8_t *Cang02_IO000, uint8_t cang
 void DisplaySensorInfo(void)
 {
 	//	float f000;
-	int i;
-	int Len002, Len003;
+	int i = 0;
+//	int Len002 = 0; 
+	int Len003 = 0;
 	static int CangNum_tskUart3;
-	float Ht_t[8];
+
 
 	//pT2C_SetupData->Reserved_parameters_4=1.0;
 
@@ -2898,11 +2902,13 @@ void DisplaySensorInfo(void)
 	}
 
 	Vt_Local_Disp = pT2C_ALL_Sensor_Data_Disp->MoniLiang_Data_Every_Cang[5];
-
+#if 0
+	float Ht_t[8];
 	Ht_t[0] = T2C_ALL_Sensor_Data01.MoniLiang_Data_Every_Cang[0];
 	Ht_t[1] = T2C_ALL_Sensor_Data02.MoniLiang_Data_Every_Cang[0];
 	Ht_t[2] = T2C_ALL_Sensor_Data03.MoniLiang_Data_Every_Cang[0];
 	Ht_t[3] = T2C_ALL_Sensor_Data04.MoniLiang_Data_Every_Cang[0];
+#endif	
 	if(vt_disp_type==0)
 	{
 		Vt_Local[0] = T2C_ALL_Sensor_Data01.MoniLiang_Data_Every_Cang[5];
@@ -3030,7 +3036,7 @@ void DisplaySensorInfo(void)
 									Vt_Local,Len002);//  %02d\r\n 
 	
 */
-	Len002 = 0;
+//	Len002 = 0;
 	//Len003=sprintf((char*)bufTextSensorInfo+Len002,"仓号:%d;h:%5.4f;T:%5.4f;T1,%5.4f;T2:%5.4f;T3:%5.4f;Vt:%5.4f;V20:%5.2f;--模拟量-----关---%d",
 	//									StoreNumber,
 	//									T2C_ALL_Sensor_Data01.MoniLiang_Data_Every_Cang[0],
@@ -3091,7 +3097,7 @@ void DisplaySensorInfo(void)
 					 Vt_Local_Disp, //采集板查表计算的Vt
 					 V20_Local_Disp);										  //  %02d\r\n ,V20_Local_Disp
 #endif
-
+#if 0	
 	if (FunDebugCode == 0)
 	{
 		//		//整车参数
@@ -3119,66 +3125,66 @@ void DisplaySensorInfo(void)
 
 		switch (FunDebugCode)
 		{
-		case DebugFun_SW_ExpansionRatio: //显示膨胀系数
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "膨胀系数s1:%6.5f;s2:%6.5f;s3,%6.5f;s4,%6.5f;\r\n",
-							 ExpansionRatio[0], ExpansionRatio[1], ExpansionRatio[2], ExpansionRatio[3]); //
+			case DebugFun_SW_ExpansionRatio: //显示膨胀系数
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "膨胀系数s1:%6.5f;s2:%6.5f;s3,%6.5f;s4,%6.5f;\r\n",
+								 ExpansionRatio[0], ExpansionRatio[1], ExpansionRatio[2], ExpansionRatio[3]); //
 
-			break;
+				break;
 
-		case DebugFun_SW_ExtAddr_ControllBoard: //显示扩展地址
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "控制板扩展地址:%08X;\r\n",
-							 addr_ext_controllBoard); //
-			break;
-		case DebugFun_SW_ValveState_PoFeng0x13: //显示破封时的阀门状态
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "破封阀门状态0x13:%02X%02X;%02X%02X;%02X%02X;%02X%02X;\r\n",
-							 ValStateArr_PoFeng_0x13[5], ValStateArr_PoFeng_0x13[6], ValStateArr_PoFeng_0x13[7], ValStateArr_PoFeng_0x13[8],
-							 ValStateArr_PoFeng_0x13[9], ValStateArr_PoFeng_0x13[10], ValStateArr_PoFeng_0x13[11], ValStateArr_PoFeng_0x13[12]); //
-			break;
+			case DebugFun_SW_ExtAddr_ControllBoard: //显示扩展地址
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "控制板扩展地址:%08X;\r\n",
+								 addr_ext_controllBoard); //
+				break;
+			case DebugFun_SW_ValveState_PoFeng0x13: //显示破封时的阀门状态
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "破封阀门状态0x13:%02X%02X;%02X%02X;%02X%02X;%02X%02X;\r\n",
+								 ValStateArr_PoFeng_0x13[5], ValStateArr_PoFeng_0x13[6], ValStateArr_PoFeng_0x13[7], ValStateArr_PoFeng_0x13[8],
+								 ValStateArr_PoFeng_0x13[9], ValStateArr_PoFeng_0x13[10], ValStateArr_PoFeng_0x13[11], ValStateArr_PoFeng_0x13[12]); //
+				break;
 
-		case DebugFun_SW_ValveState_PoFeng0x20: //显示破封时的阀门状态
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "破封阀门状态0x20:%02X%02X;%02X%02X;%02X%02X;%02X%02X;\r\n",
-							 ValStateArr_PoFeng_0x20[18 + 0], ValStateArr_PoFeng_0x20[18 + 1], ValStateArr_PoFeng_0x20[18 + 2], ValStateArr_PoFeng_0x20[18 + 3],
-							 ValStateArr_PoFeng_0x20[18 + 4], ValStateArr_PoFeng_0x20[18 + 5], ValStateArr_PoFeng_0x20[18 + 6], ValStateArr_PoFeng_0x20[18 + 7]); //
-			break;
+			case DebugFun_SW_ValveState_PoFeng0x20: //显示破封时的阀门状态
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "破封阀门状态0x20:%02X%02X;%02X%02X;%02X%02X;%02X%02X;\r\n",
+								 ValStateArr_PoFeng_0x20[18 + 0], ValStateArr_PoFeng_0x20[18 + 1], ValStateArr_PoFeng_0x20[18 + 2], ValStateArr_PoFeng_0x20[18 + 3],
+								 ValStateArr_PoFeng_0x20[18 + 4], ValStateArr_PoFeng_0x20[18 + 5], ValStateArr_PoFeng_0x20[18 + 6], ValStateArr_PoFeng_0x20[18 + 7]); //
+				break;
 
-		case DebugFun_SW_ExtAddr_IO_OnOff_Group: //显示扩展地址
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "U32阀门开关:%08X;%08X;%08X;%08X;\r\n",
-							 IO_OnOff_State01, IO_OnOff_State02, IO_OnOff_State03, IO_OnOff_State04); //
-			break;
-		case DebugFun_Set_Enable_ReSeal: //允许重复施封
-			//FunDebugCode = 0;
-			Config_info_all.Config_fun_id |= 0x08; //UART4_RX_BUF[2];//功能配置ID
-			FM25L16B_WriteByte(ADDR_Config_fun_id, Config_info_all.Config_fun_id);
+			case DebugFun_SW_ExtAddr_IO_OnOff_Group: //显示扩展地址
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "U32阀门开关:%08X;%08X;%08X;%08X;\r\n",
+								 IO_OnOff_State01, IO_OnOff_State02, IO_OnOff_State03, IO_OnOff_State04); //
+				break;
+			case DebugFun_Set_Enable_ReSeal: //允许重复施封
+				//FunDebugCode = 0;
+				Config_info_all.Config_fun_id |= 0x08; //UART4_RX_BUF[2];//功能配置ID
+				FM25L16B_WriteByte(ADDR_Config_fun_id, Config_info_all.Config_fun_id);
 
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "允许重复施封:%08X;%08X;%08X;%08X;%02X\r\n",
-							 IO_OnOff_State01, IO_OnOff_State02, IO_OnOff_State03, IO_OnOff_State04, Config_info_all.Config_fun_id); //
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "允许重复施封:%08X;%08X;%08X;%08X;%02X\r\n",
+								 IO_OnOff_State01, IO_OnOff_State02, IO_OnOff_State03, IO_OnOff_State04, Config_info_all.Config_fun_id); //
 
-			break;
+				break;
 
-		case DebugFun_Set_Disable_ReSeal: //禁止重复施封
+			case DebugFun_Set_Disable_ReSeal: //禁止重复施封
 
-			//FunDebugCode = 0;
-			Config_info_all.Config_fun_id &= (~0x08); //功能配置ID
-			FM25L16B_WriteByte(ADDR_Config_fun_id, Config_info_all.Config_fun_id);
+				//FunDebugCode = 0;
+				Config_info_all.Config_fun_id &= (~0x08); //功能配置ID
+				FM25L16B_WriteByte(ADDR_Config_fun_id, Config_info_all.Config_fun_id);
 
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "禁止重复施封!%08X;%08X;%08X;%08X;%02X;\r\n",
-							 IO_OnOff_State01, IO_OnOff_State02, IO_OnOff_State03, IO_OnOff_State04,
-							 Config_info_all.Config_fun_id); //
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "禁止重复施封!%08X;%08X;%08X;%08X;%02X;\r\n",
+								 IO_OnOff_State01, IO_OnOff_State02, IO_OnOff_State03, IO_OnOff_State04,
+								 Config_info_all.Config_fun_id); //
 
-			break;
+				break;
 
-		case DebugFun_SW_ExtAddr_IO_Exception_Group: //显示扩展地址
-			Len002 = sprintf((char *)bufTextSensorInfo + Len003, "U32阀门异常:%08X;%08X;%08X;%08X;%02X;\r\n",
-							 IO_Exception_State01, IO_Exception_State02, IO_Exception_State03, IO_Exception_State04,
-							 Config_info_all.Config_fun_id); //
+			case DebugFun_SW_ExtAddr_IO_Exception_Group: //显示扩展地址
+				Len002 = sprintf((char *)bufTextSensorInfo + Len003, "U32阀门异常:%08X;%08X;%08X;%08X;%02X;\r\n",
+								 IO_Exception_State01, IO_Exception_State02, IO_Exception_State03, IO_Exception_State04,
+								 Config_info_all.Config_fun_id); //
 
-			break;
+				break;
 
-		default:
-			//				Len002=sprintf((char*)bufTextSensorInfo+Len003,"膨胀系数s1:%6.5f;s2:%6.5f;s3,%6.5f;s4,%6.5f;\r\n",
-			//									ExpansionRatio[0],ExpansionRatio[1],ExpansionRatio[2],ExpansionRatio[3]);//
-			__NOP();
-			break;
+			default:
+				//				Len002=sprintf((char*)bufTextSensorInfo+Len003,"膨胀系数s1:%6.5f;s2:%6.5f;s3,%6.5f;s4,%6.5f;\r\n",
+				//									ExpansionRatio[0],ExpansionRatio[1],ExpansionRatio[2],ExpansionRatio[3]);//
+				__NOP();
+				break;
 		}
 	}
 
@@ -3199,24 +3205,24 @@ void DisplaySensorInfo(void)
 			memset(bufTextSensorInfo,0,256);
 			switch (i)
 			{
-			case 0:
-				pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data01;
-				Len003 = sprintf((char *)bufTextSensorInfo, "一");
-				break;
-			case 1:
-				pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data02;
-				Len003 = sprintf((char *)bufTextSensorInfo, "二");
-				break;
-			case 2:
-				pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data03;
-				Len003 = sprintf((char *)bufTextSensorInfo, "三");
-				break;
-			case 3:
-				pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data04;
-				Len003 = sprintf((char *)bufTextSensorInfo, "四");
-				break;
-			default:
-				break;
+				case 0:
+					pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data01;
+					Len003 = sprintf((char *)bufTextSensorInfo, "一");
+					break;
+				case 1:
+					pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data02;
+					Len003 = sprintf((char *)bufTextSensorInfo, "二");
+					break;
+				case 2:
+					pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data03;
+					Len003 = sprintf((char *)bufTextSensorInfo, "三");
+					break;
+				case 3:
+					pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data04;
+					Len003 = sprintf((char *)bufTextSensorInfo, "四");
+					break;
+				default:
+					break;
 			}
 #if 0			
 			Len003 += sprintf((char *)bufTextSensorInfo+Len003, "仓装油: 体积Vt:% 7.1f L;液位ht:%1.4f m;体积V20:% 7.1f L;\r\n",
@@ -3580,6 +3586,7 @@ void DisplaySensorInfo(void)
 			
 			*/
 	//HAL_GPIO_TogglePin(GPIOC, DWI_Pin); //看门狗sp706
+#endif
 }
 
 /* USER CODE END Application */

+ 22 - 22
Src/main.c

@@ -83,7 +83,7 @@ Note by Daiyf at 2021-2-3
 #include "DS1302.h"
 #include "KeySlave485.h"
 #include "usart.h"
-
+#include "leaf_ota.h"
 
 uint32_t sd000,sd001;//浮点数转换为实时显示的参数,4字节
 uint16_t uart4RxCounter=0; //串口4接收数据计数器
@@ -162,27 +162,27 @@ int main(void)
   SystemClock_Config();
 
   /* USER CODE BEGIN SysInit */
-	
-				if(__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET)
-        {
-           //这是上电复位
-					PrintCnt=99;
-        }
-        else if (__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET)
-        {
-           //这是外部RST管脚复位RCC_GetFlagStatus
-					PrintCnt=88;
-        }
-        else if (__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST)!= RESET)
-        {
-           ////软件复位
-        }
-				else if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST))//独立看门狗复位
-				{
-						;//
-				}
-        //RCC_ClearFlag();//清除RCC中复位标志
-				__HAL_RCC_CLEAR_RESET_FLAGS();//清除所有复位标识,用于复位类型的判断
+
+  if(__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET)
+  {
+     //这是上电复位
+    PrintCnt=99;
+  }
+  else if (__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET)
+  {
+     //这是外部RST管脚复位RCC_GetFlagStatus
+    PrintCnt=88;
+  }
+  else if (__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST)!= RESET)
+  {
+     ////软件复位
+  }
+  else if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST))//独立看门狗复位
+  {
+      ;//
+  }
+  //RCC_ClearFlag();//清除RCC中复位标志
+  __HAL_RCC_CLEAR_RESET_FLAGS();//清除所有复位标识,用于复位类型的判断
   /* USER CODE END SysInit */
 
   /* Initialize all configured peripherals */

+ 17 - 7
Src/md5c.c

@@ -321,6 +321,7 @@ void MDString (char *string,unsigned char digest[16])
  MD5Update (&context, (unsigned char *)string, len); 
  MD5Final (digest, &context); 
 } 
+#if 0
 /* Digests a file and prints the result. 
  */ 
 int MD5File (char *filename,unsigned char digest[16]) 
@@ -335,18 +336,17 @@ int MD5File (char *filename,unsigned char digest[16])
  else { 
   MD5Init (&context); 
   while (len = fread (buffer, 1, 1024, file)) 
-   MD5Update (&context, buffer, len); 
+	{
+		MD5Update (&context, buffer, len); 
+	}
+  
   MD5Final (digest, &context); 
  
   fclose (file); 
  } 
  return 0; 
 } 
-void MD5UpdaterString(MD5_CTX *context,const char *string) 
-{ 
- unsigned int len = strlen (string); 
- MD5Update (context, (unsigned char *)string, len); 
-} 
+
 int MD5FileUpdateFile (MD5_CTX *context,char *filename) 
 { 
  FILE *file; 
@@ -357,8 +357,18 @@ int MD5FileUpdateFile (MD5_CTX *context,char *filename)
   return -1; 
  else { 
   while (len = fread (buffer, 1, 1024, file)) 
-   MD5Update (context, buffer, len); 
+	{
+		MD5Update (context, buffer, len); 
+	}
+   
   fclose (file); 
  } 
  return 0; 
 } 
+#endif
+
+void MD5UpdaterString(MD5_CTX *context,const char *string) 
+{ 
+ unsigned int len = strlen (string); 
+ MD5Update (context, (unsigned char *)string, len); 
+} 

+ 3 - 0
Src/stm32f7xx_it.c

@@ -38,6 +38,9 @@
 #include "Data_deal.h"
 #include "stm32f7xx_it.h"
 #include "cmsis_os.h"
+#include "TerminalSlave485.h"
+#include "ScreenMaster485.h"
+#include "CollectMaster485.h"
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
 /* USER CODE END Includes */

+ 1 - 1
Src/usart.c

@@ -146,7 +146,7 @@ void MX_USART2_UART_Init(void)
 {
 
   huart2.Instance = USART2;
-  huart2.Init.BaudRate = 19200;//19200;
+  huart2.Init.BaudRate = 19200;//38400;//19200;
   huart2.Init.WordLength = UART_WORDLENGTH_8B;
   huart2.Init.StopBits = UART_STOPBITS_1;
   huart2.Init.Parity = UART_PARITY_NONE;