Przeglądaj źródła

1.增加可配置功能

zhuzl 3 lat temu
rodzic
commit
e1336591b1

+ 11 - 14
Core/Inc/cang.h

@@ -10,26 +10,23 @@ typedef struct{
 uint16_t Cang_Num;							//仓数量
 	
 /**************************阀门传感器信息**************************************/	
-uint16_t BGY_Type;                      //壁挂油
-uint16_t XYF_Type;								      //卸油阀类型 0:二合一(霍尔),1:行程检测(TMR)
-uint16_t HDF_Type;								      //海底阀类型 0:气压开关监测底阀  1:智能底阀
-uint16_t RKG_Type;							        //人孔盖类型 0:倾角人孔盖,1:磁编码人孔盖
-	
-uint16_t RKG_XG;							          //有无人孔小盖 0:无,1:有
-uint16_t RKG_DG;							          //有无人孔大盖 0:无,1:有
-uint16_t BGY_INSTALL;                   //有无壁挂油 0:无,1:有
-uint16_t XYF_INSTALL;                   //有无卸油阀 0:无,1:有
-uint16_t HDF_INSTALL;                   //有无海底阀 0:无,1:有
-	
+uint16_t BGY_Type	;               //壁挂油
+uint16_t XYF_Type;								//卸油阀类型 0:二合一(霍尔),1:行程检测(TMR)
+uint16_t HDF_Type;								//海底阀类型 0:气压开关监测底阀  1:智能底阀
+uint16_t RKG_Type;							  //人孔盖类型 0:倾角人孔盖,1:磁编码人孔盖
+uint16_t RKG_XG;							    //有无人孔小盖 0:无,1:有
+uint16_t RKG_DG;							    //有无人孔大盖 0:无,1:有
+uint16_t BGY_INSTALL;             //有无壁挂油 0:无,1:有
+uint16_t XYF_INSTALL;             //有无卸油阀 0:无,1:有
+uint16_t HDF_INSTALL;             //有无海底阀 0:无,1:有
 uint16_t XYF_Num[CANG_MAX];							//8个仓每仓卸油阀数量		
 uint16_t HDF_Num[CANG_MAX];							//8个仓每仓海底阀数量			
 uint16_t RKG_Num[CANG_MAX];							//8个仓每仓人孔盖数量	
 uint16_t BGY_Num[CANG_MAX];	            //8个仓每仓壁挂油传感器数量
 /**************************非阀门传感器信息**************************************/	
 uint16_t CZSS_Num[CANG_MAX];	          //8个仓每仓磁致伸缩数量	
-uint16_t Level;                         //0:没有液位,1:磁致伸缩,2:雷达液位...
-uint16_t Temperture;					  	      //0: 没有温度传感器,1:1点测温,3:3点测温...
-
+uint16_t Level;                   //0:没有液位,1:磁致伸缩,2:雷达液位...
+uint16_t Temperture;					  	//0: 没有温度传感器,1:1点测温,3:3点测温...
 uint16_t CRC1;
 uint16_t CRC2;
 /**************************单独传感器**************************************/		

+ 1 - 1
Core/Inc/main.h

@@ -35,7 +35,7 @@ extern "C" {
 
 //0----关闭看门狗SP706   1----打开看门狗SP706--------------必须配置的参数1/3
 //#define WatchDogOn   1   //是否打开看门狗 
-#define WatchDogOn   1   //是否打开看门狗 
+#define WatchDogOn   0   //是否打开看门狗 
 
 /* USER CODE END Includes */
 

+ 2 - 12
Core/Inc/rkg.h

@@ -42,18 +42,8 @@ typedef struct
 {
     uint16_t uiPos;
     uint16_t uiRefrence;
-    uint16_t uiXG;
-    uint16_t uiDG;
-	  uint16_t uiRefcnt1;
-    uint16_t uiRefcnt2;	
-	  uint16_t uiDgcnt1;
-    uint16_t uiDgcnt2;	
-	  uint16_t uiDgcnt3;
-    uint16_t uiDgcnt4;	
-	  uint16_t uiDgcnt5;
-    uint16_t uiDgcnt6;	
-	  uint16_t uiDgcnt7;
-    uint16_t uiDgcnt8;		
+    int16_t uiXG;
+    int16_t uiDG;
     S_DELTA sDelta[ANGLE_DATA_CNT];
 }S_ANGLEDATA;
 

+ 73 - 34
Core/Src/hdf.c

@@ -123,6 +123,7 @@ void Get_ZN_hdf_data(void)
 void TOUCHUAN_UART_NUM(uint8_t* pTx) 
 {
 	KZQ_Inf* pkzq = &kzq_inf;
+	int retry;
 //	Cang_Inf* pcang = &cang_inf;
 //	uint8_t i = 0;
 //	uint16_t ModBusCRC = 0;
@@ -130,41 +131,79 @@ void TOUCHUAN_UART_NUM(uint8_t* pTx)
 //	uint16_t ModbusCRC = 0;                      
 //    HDF_Inf* phdf = hdf_inf;
 	uint16_t Uart_num = 0;
-
-
-
-
-			Uart_num=USART2_RX_BUF002[18];
-			Uart_num = Uart_num << 8;
-			Uart_num |= USART2_RX_BUF002[19];
-			if(Uart_num == 0x0003)
-			{//if(Uart_num == 0x0001)
-					if(pkzq->USE_XYF == 0)
-					{//if(pkzq->USE_XYF == 0)
-						if(pkzq->data_buf[7] == 0x06)
-						{//if(pkzq->data_buf[7] == 0x06)
-							pkzq->USE_XYF = 1;
-							
-							Uart_len_TouChuan=USART2_RX_BUF002[20];
-							Uart_len_TouChuan = Uart_len_TouChuan << 8;
-							Uart_len_TouChuan |= USART2_RX_BUF002[21];
-							
-							memcpy(ALL_TxBuf,&USART2_RX_BUF002[22],Uart_len_TouChuan);							
-
-						 }//if(pkzq->data_buf[7] == 0x06)
-
-						}//if(pkzq->USE_XYF == 0)
+	Uart_num=USART2_RX_BUF002[18];
+	Uart_num = Uart_num << 8;
+	Uart_num |= USART2_RX_BUF002[19];
+	if(Uart_num == 1)
+	{//if(Uart_num == 0x0001)
+		if(pkzq->USE_XYF == 0)
+		{//if(pkzq->USE_XYF == 0)
+			if(pkzq->data_buf[7] == 0x06)
+			{//if(pkzq->data_buf[7] == 0x06)
+				pkzq->USE_XYF = 1;
+				Uart_len_TouChuan=USART2_RX_BUF002[20];
+				Uart_len_TouChuan = Uart_len_TouChuan << 8;
+				Uart_len_TouChuan |= USART2_RX_BUF002[21];
+				memcpy(XYF_TxBuf,&USART2_RX_BUF002[22],Uart_len_TouChuan);	
+				//osDelay(50);
+				for(retry=0;retry<300;++retry)
+				{
+					if(flagU3Rx && (pkzq->USE_XYF==0))
+						break;
+					osDelay(1);
+				}	
+				if(flagU3Rx)
+				{
+					pTx[20] = (data_lengthU3>>8)&0xff;
+					pTx[21] = data_lengthU3&0xff;
+					memcpy(pTx+22,USART3_RX_BUF002,data_lengthU3);
+					flagU1Rx=0;		
+				}	
+				else
+				{
+					pTx[20] = 0;
+					pTx[21] = 0;
+				}		
+
+			}//if(pkzq->data_buf[7] == 0x06)
+		}//if(pkzq->USE_XYF == 0)
 		 
-				}//if(Uart_num == 0x0001)
-
- 
-		
-	
-	
-
-
-	
-
+	}//if(Uart_num == 0x0001)
+
+	if(Uart_num == 0)
+	{//if(Uart_num == 0x0001)
+		if(pkzq->USE_RKG == 0)
+		{//if(pkzq->USE_XYF == 0)
+			if(pkzq->data_buf[7] == 0x06)
+			{//if(pkzq->data_buf[7] == 0x06)
+				pkzq->USE_RKG = 1;
+				Uart_len_TouChuan=USART2_RX_BUF002[20];
+				Uart_len_TouChuan = Uart_len_TouChuan << 8;
+				Uart_len_TouChuan |= USART2_RX_BUF002[21];
+				memcpy(RKG_TxBuf,&USART2_RX_BUF002[22],Uart_len_TouChuan);
+				//osDelay(50);
+				for(retry=0;retry<300;++retry)
+				{
+					if(flagU1Rx && (pkzq->USE_RKG == 0))
+						break;
+					osDelay(1);
+				}
+				if(flagU1Rx)
+				{
+					pTx[20] = (data_lengthU1>>8)&0xff;
+					pTx[21] = data_lengthU1&0xff;
+					memcpy(pTx+22,USART1_RX_BUF002,data_lengthU1);
+					flagU1Rx=0;		
+				}	
+				else
+				{
+					pTx[20] = 0;
+					pTx[21] = 0;
+				}	
+			}//if(pkzq->data_buf[7] == 0x06)
+		}//if(pkzq->USE_XYF == 0)
+		 
+	}//if(Uart_num == 0x0001)
 }
 
 

+ 144 - 144
Core/Src/kzq.c

@@ -24,6 +24,7 @@ uint8_t ALL_TxBuf[70] = {0};
 
 
 KZQ_Inf kzq_inf;
+extern uint16_t Uart_len_TouChuan;
 
 #include "stm32f1xx_hal.h"
 
@@ -60,30 +61,36 @@ uint16_t Read_CangState(uint8_t* pTx)
 /*************第一组阀门状态***************/
 	
 	if(phdf[HDF_Start+1].HDF_Error)
-	pTx[18] = State_Error;
+		pTx[18] = State_Error;
 	else
-	pTx[18] = Get_DFState(HDF_Start+1);              //获取罐仓1号底阀状态
+		pTx[18] = Get_DFState(HDF_Start+1);              //获取罐仓1号底阀状态
 	
 	if(pxyf[XYF_Start+1].XYF_Error)
-	pTx[19] = State_Error;
+		pTx[19] = State_Error;
 	else
-	pTx[19] = pxyf[XYF_Start+1].XYF_State1;					 //获取罐仓1号卸油阀状态 pxyf[XYF_Start+1].XYF_Data1[0] ;
+		pTx[19] = pxyf[XYF_Start+1].XYF_State1;					 //获取罐仓1号卸油阀状态 pxyf[XYF_Start+1].XYF_Data1[0] ;
 	tickMain=HAL_GetTick();
 	if(prkg[RKG_Start+1].RKDG_Error)
 	{
-	pTx[20] = State_Error;
-	pTx[21] = State_Error;
+		pTx[20] = State_Error;
+		pTx[21] = State_Error;
+				
 	}
 	else
 	{
-	pTx[20] = prkg[RKG_Start+1].RKDG_State;		 			 //获取罐仓1号人孔大盖状态
-	pTx[21] = prkg[RKG_Start+1].RKXG_State;					 //获取罐仓1号人孔小盖状态		
+		pTx[20] = prkg[RKG_Start+1].RKDG_State;		 			 //获取罐仓1号人孔大盖状态
+		pTx[21] = prkg[RKG_Start+1].RKXG_State;					 //获取罐仓1号人孔小盖状态
+			
 	}
+	
 	if(pxyf[XYF_Start+1].XYF_Error)
 		pTx[22] = State_Error;
 	else
 		pTx[22] = pxyf[XYF_Start+1].XYF_State2;					 //获取罐仓1号卸尽状态
+	
 
+		
+	//新增壁挂油传感器状态     邵磊明20210916
 	if(pBGY[BGY_Start+1].BGY_Error)
 	{
 	  pTx[23] = State_Error;
@@ -92,9 +99,9 @@ uint16_t Read_CangState(uint8_t* pTx)
 	{
 	  pTx[23] = pBGY[BGY_Start+1].BGY_State;
 	}
-
+ 	//新增油气回收传感器状态     邵磊明20210918
 	pTx[24] = pYqhuishou[1].Yqhuishou_SSWD[0];     
-
+ 	//新增智能海底阀传感器状态     邵磊明20210919
 	if(phdf[HDF_Start+1].HDF_Error)
 	pTx[25] = (phdf[HDF_Start+1].HDF_Data[1]);
 	else
@@ -112,8 +119,8 @@ uint16_t Read_CangState(uint8_t* pTx)
 	}
 	else
 			pTx[28] = 0xA5;
-//	if(pcang->XYF_Num[Cang_Num - 1] > 1)
-//	{
+	if(pcang->XYF_Num[Cang_Num - 1] > 1)
+	{
 		if( pxyf[XYF_Start+2].XYF_Error)
 		{
 			pTx[29] = State_Error;
@@ -124,12 +131,12 @@ uint16_t Read_CangState(uint8_t* pTx)
 			pTx[29] = pxyf[XYF_Start+2].XYF_State1;					//获取罐仓2号卸油阀状态
 			pTx[32] = pxyf[XYF_Start+2].XYF_State2;					//获取罐仓2号卸尽状态
 		}
-//	}
-//	else
-//	{
-//		pTx[29] = 0xA5;
-//		pTx[32] = 0xA5;
-//	}
+	}
+	else
+	{
+		pTx[29] = 0xA5;
+		pTx[32] = 0xA5;
+	}
 	if(pcang->RKG_Num[Cang_Num - 1] > 1)
 	{		
 		if(prkg[RKG_Start+2].RKDG_Error)
@@ -306,11 +313,11 @@ void Sen_CangState_old(uint8_t* F_STATE)
 	
 	
 	for(k = 0;k < 8;k++)								//查询1-8仓状态
-	{
-		//for(k = 0;k < 8;k++)								//查询1-8仓 状态   开始
+	{//for(k = 0;k < 8;k++)								//查询1-8仓 状态   开始
 		i = k*2;
 		F_STATE[5+i] = 0x00;
 		F_STATE[6+i] = 0x00;
+		j = 0;
 		while(j < pcang->RKG_Num[k])		  //查询1-8仓所有人孔盖数据
 		{
 			if(prkg[j+1+RKG_Num].RKDG_Error)
@@ -326,41 +333,44 @@ void Sen_CangState_old(uint8_t* F_STATE)
 					F_STATE[5+i] |= BIT2;
 			}
 			j++;
-			RKG_Num++;
+			//RKG_Num++;
 		}
+		RKG_Num+=j;
 		j = 0;
-		while(j < 2)//卸油阀状态或运算pcang->XYF_Num[k]
+		while(j < pcang->XYF_Num[k])////卸油阀状态或运算
 		{
-			if(pxyf[j+1+i].XYF_Error)
+			if(pxyf[j+1+XYF_Num].XYF_Error)
 			{
 				F_STATE[5+i] |= BIT8;
 				F_STATE[6+i] |= 0x55;
 			}
 			else 
 			{
-				if(pxyf[j+1+i].XYF_State1)
+				if(pxyf[j+1+XYF_Num].XYF_State1)
 					F_STATE[5+i] |= BIT4;
-				if(pxyf[j+1+i].XYF_State2)
+				if(pxyf[j+1+XYF_Num].XYF_State2)
 					F_STATE[6+i] = BIT1;//1;
 			}
 			j++;		
-			XYF_Num++;
+		//	XYF_Num++;
 		}
+		XYF_Num+=j;
 		j = 0;
 		
-		
 		while(j < pcang->HDF_Num[k])
 		{
 			if(Get_DFState(j+1+HDF_Num) == 1)
 				F_STATE[5+i] |= BIT3;
 			else if(Get_DFState(j+1+HDF_Num) == 0)
-				F_STATE[5+i] &= ~BIT3;
+			{
+				;//F_STATE[5+i] &= ~BIT3;
+			}	
 			else
 				F_STATE[5+i] &= BIT7;
 			j++;
-      HDF_Num++;
+			
 		}
-	 
+	 	HDF_Num+=j;
 		
 		j = 0;
 	}////for(k = 0;k < 8;k++)								//查询1-8仓 状态   结束
@@ -2394,7 +2404,7 @@ uint16_t Read_CangSensorData_2(uint8_t* pTx)
 */
 uint16_t Read_CangSensorData_1(uint8_t* pTx)//邵磊明增加	
 {
-//传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1
+  //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1
 //	Angle_Inf* pangle = &angle_inf;											
 	TEM_Inf* ptem = tem_inf;
 //	KZQ_Inf* pkzq = &kzq_inf;
@@ -2416,13 +2426,13 @@ uint16_t Read_CangSensorData_1(uint8_t* pTx)//
     uint8_t Cang_Num = 1,i = 0,HDF_Start = 0,XYF_Start = 0,RKG_Start = 0,BGY_Start = 0;
 	if(Cang_Num < 1 ||Cang_Num > 8)
 		return 0;
-	  for(i = 0;i < Cang_Num - 1;i++)
-	  {
+	for(i = 0;i < Cang_Num - 1;i++)
+	{
 		HDF_Start += pcang->HDF_Num[i];
 		XYF_Start += pcang->XYF_Num[i];
 		RKG_Start += pcang->RKG_Num[i];
 		BGY_Start += pcang->BGY_Num[i];
-	  }
+	}
 	  for(i = 0;i < 4;i++)                       //铅封
     {
 	   pTx[16+i] = 0;	   
@@ -2481,23 +2491,23 @@ uint16_t Read_CangSensorData_1(uint8_t* pTx)//
 		pTx[52+8] = pxyf[XYF_Start+1].XYF_State2;					 //获取罐仓1号卸尽状态
 
 
-	//pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0];      //底
+	//  pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0];      //底
     pTx[37+8] = 0;
 	  pTx[38+8] = 0;
     pTx[39+8] = 0;		
-	//pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0];      //卸
+	//  pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0];      //卸
     pTx[41+8] = 0;
 	  pTx[42+8] = 0;
     pTx[43+8] = 0;		 
-	//pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0];      //大倾角
+	//  pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0];      //大倾角
     pTx[45+8] = 0;
 	  pTx[46+8] = 0;
     pTx[47+8] = 0;		
-	//pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0];      //小倾角
+	//  pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0];      //小倾角
     pTx[49+8] = 0;
 	  pTx[50+8] = 0;
     pTx[51+8] = 0;	
-	//pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0];      //尽
+	//  pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0];      //尽
     pTx[53+8] = 0;
 	  pTx[54+8] = 0;
     pTx[55+8] = 0;
@@ -3101,6 +3111,7 @@ uint16_t Angle_SetZero(uint8_t* pTx)
 			XYF_TxBuf[3] = 0x01;
 			XYF_TxBuf[4] = 0x00;
 			XYF_TxBuf[5] = 0x08;
+			Uart_len_TouChuan=6;
 		}
 		else
 		{
@@ -3182,6 +3193,7 @@ uint16_t XYF_SetOFF(uint8_t* pTx)
 				XYF_TxBuf[i++] = 0x0D;
 				XYF_TxBuf[i++] = 0x0A;
 			}*/
+			Uart_len_TouChuan=i;
 		}
 		else
 			return 0;
@@ -3226,6 +3238,7 @@ uint16_t XYF_SetThreshold(uint8_t* pTx)
 			//	XYF_TxBuf[i++] = 0x0D;
 			//	XYF_TxBuf[i++] = 0x0A;
 			}
+			Uart_len_TouChuan=i;
 		}
 		else
 			return 0;
@@ -3248,25 +3261,26 @@ uint16_t HDF_Set_CloseVal(uint8_t* pTx)
 		{
 			pkzq->USE_XYF = 1;
 
-			ALL_TxBuf[i++] = pkzq->data_buf[17];
-			ALL_TxBuf[i++] = 0x06;
-			ALL_TxBuf[i++] = 0x10;
-			ALL_TxBuf[i++] = pkzq->data_buf[19];
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = pkzq->data_buf[17];
+			XYF_TxBuf[i++] = 0x06;
+			XYF_TxBuf[i++] = 0x10;
+			XYF_TxBuf[i++] = pkzq->data_buf[19];
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
 											
-			ModBusCRC = LIB_CRC_MODBUS(ALL_TxBuf,14);
+			ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14);
 			
-			ALL_TxBuf[i++] = ModBusCRC>>8;
-			ALL_TxBuf[i++] = ModBusCRC&0xff;
+			XYF_TxBuf[i++] = ModBusCRC>>8;
+			XYF_TxBuf[i++] = ModBusCRC&0xff;
+			Uart_len_TouChuan=i;
 
 		}
 		else
@@ -3290,26 +3304,26 @@ uint16_t HDF_Set_Gain(uint8_t* pTx)
 		{
 			pkzq->USE_XYF = 1;
 
-			ALL_TxBuf[i++] = pkzq->data_buf[17];
-			ALL_TxBuf[i++] = 0x06;
-			ALL_TxBuf[i++] = 0x12;
-			ALL_TxBuf[i++] = pkzq->data_buf[19];
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = pkzq->data_buf[17];
+			XYF_TxBuf[i++] = 0x06;
+			XYF_TxBuf[i++] = 0x12;
+			XYF_TxBuf[i++] = pkzq->data_buf[19];
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
 											
-			ModBusCRC = LIB_CRC_MODBUS(ALL_TxBuf,14);
+			ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14);
 			
-			ALL_TxBuf[i++] = ModBusCRC>>8;
-			ALL_TxBuf[i++] = ModBusCRC&0xff;
-
+			XYF_TxBuf[i++] = ModBusCRC>>8;
+			XYF_TxBuf[i++] = ModBusCRC&0xff;
+			Uart_len_TouChuan=i;
 		}
 		else
 			return 0;
@@ -3333,26 +3347,26 @@ uint16_t HDF_Reset(uint8_t* pTx)
 		{
 			pkzq->USE_XYF = 1;
 
-			ALL_TxBuf[i++] = pkzq->data_buf[17];
-			ALL_TxBuf[i++] = 0x06;
-			ALL_TxBuf[i++] = 0x00;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = pkzq->data_buf[17];
+			XYF_TxBuf[i++] = 0x06;
+			XYF_TxBuf[i++] = 0x00;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
 											
-			ModBusCRC = LIB_CRC_MODBUS(ALL_TxBuf,14);
+			ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14);
 			
-			ALL_TxBuf[i++] = ModBusCRC>>8;
-			ALL_TxBuf[i++] = ModBusCRC&0xff;
-
+			XYF_TxBuf[i++] = ModBusCRC>>8;
+			XYF_TxBuf[i++] = ModBusCRC&0xff;
+			Uart_len_TouChuan=i;
 		}
 		else
 			return 0;
@@ -3378,26 +3392,26 @@ uint16_t HDF_Set_Threshold(uint8_t* pTx)
 		{
 			pkzq->USE_XYF = 1;
 
-			ALL_TxBuf[i++] = pkzq->data_buf[17];
-			ALL_TxBuf[i++] = 0x06;
-			ALL_TxBuf[i++] = 0x14;
-			ALL_TxBuf[i++] = pkzq->data_buf[18];
-			ALL_TxBuf[i++] = pkzq->data_buf[19];
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
-			ALL_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = pkzq->data_buf[17];
+			XYF_TxBuf[i++] = 0x06;
+			XYF_TxBuf[i++] = 0x14;
+			XYF_TxBuf[i++] = pkzq->data_buf[18];
+			XYF_TxBuf[i++] = pkzq->data_buf[19];
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
+			XYF_TxBuf[i++] = 0xA5;
 											
-			ModBusCRC = LIB_CRC_MODBUS(ALL_TxBuf,14);
+			ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14);
 			
-			ALL_TxBuf[i++] = ModBusCRC>>8;
-			ALL_TxBuf[i++] = ModBusCRC&0xff;
-
+			XYF_TxBuf[i++] = ModBusCRC>>8;
+			XYF_TxBuf[i++] = ModBusCRC&0xff;
+			Uart_len_TouChuan=i;
 		}
 		else
 			return 0;
@@ -3419,7 +3433,7 @@ uint16_t RKG_SetZero(uint8_t* pTx)
 	{
 		if(pkzq->data_buf[7] == 0x06)
 		{
-			pkzq->USE_RKG = 1;
+			
 			if(pcang->RKG_Type == 1)
 			{
 			//	RKG_TxBuf[i++] = 0x0D;
@@ -3447,6 +3461,8 @@ uint16_t RKG_SetZero(uint8_t* pTx)
 			//	RKG_TxBuf[i++] = 0x0D;
 			//	RKG_TxBuf[i++] = 0x0A;
 			}
+			Uart_len_TouChuan=i;
+			pkzq->USE_RKG = 1;
 		}
 		else
 			return 0;
@@ -3629,13 +3645,16 @@ uint16_t CJQ_SetConfig(uint8_t* pTx)
 		Flash_buf[i] = pkzq->data_buf[16+i];
 	}	
 	if(pkzq->data_buf[7] == 0x06)	
+	{
 		Flash_WriteBytes(Flash_buf,ADDR_CANG_NUM,pTx[11]);
+		Cang_Init();
+	}
 	Flash_ReadBytes(Flash_buf,ADDR_CANG_NUM,pTx[11]);
-	Cang_Init();
+	
 	for(i = 0;i < pkzq->data_buf[11];i++)
 	{		
-		if((Flash_buf[i] != pkzq->data_buf[16+i])&&(pkzq->data_buf[7] == 0x06))
-			return 0;
+		//if((Flash_buf[i] != pkzq->data_buf[16+i])&&(pkzq->data_buf[7] == 0x06))
+		//	return 0;
 		pTx[16+i] = Flash_buf[i];
 	}
 	return 1;
@@ -3687,13 +3706,18 @@ uint16_t XYF_SetTypeNum(uint8_t* pTx)
 		Flash_buf[i] = pkzq->data_buf[16+i];
 	}
 	if(pkzq->data_buf[7] == 0x06)		
+	{
 		Flash_WriteBytes(Flash_buf,ADDR_XYFSENSOR_TYPE,1);
+	}	
 	Flash_ReadBytes(Flash_buf,ADDR_XYFSENSOR_TYPE,1);
 	pTx[16] = Flash_buf[0];
 	if(Flash_buf[0] < 5)
 		pcang->XYF_Type = Flash_buf[0];
 	if(pkzq->data_buf[7] == 0x06)
+	{
 		Flash_WriteBytes(Flash_buf+1,ADDR_XYF_NUM,8);
+	}	
+	
 	Flash_ReadBytes(Flash_buf+1,ADDR_XYF_NUM,8);
 	
 	for(i = 0;i < pkzq->data_buf[11];i++)
@@ -3782,13 +3806,9 @@ uint16_t Level_SetCalvalue(uint8_t* pTx)
 	Flash_buf[1] = pkzq->data_buf[18]<<8|pkzq->data_buf[19];
 	Flash_buf[2] = pkzq->data_buf[20]<<8|pkzq->data_buf[21];
 	Flash_buf[3] = pkzq->data_buf[22]<<8|pkzq->data_buf[23];	
-	Flash_buf[4] = pkzq->data_buf[24]<<8|pkzq->data_buf[25];
-	Flash_buf[5] = pkzq->data_buf[26]<<8|pkzq->data_buf[27];
-	Flash_buf[6] = pkzq->data_buf[28]<<8|pkzq->data_buf[29];
-	Flash_buf[7] = pkzq->data_buf[30]<<8|pkzq->data_buf[31];		
 	if(pkzq->data_buf[7] == 0x06)
-	Flash_WriteBytes(Flash_buf,CANG1_LEVEL_CAL,8);
-	Flash_ReadBytes(Flash_buf,CANG1_LEVEL_CAL,8);
+	Flash_WriteBytes(Flash_buf,CANG1_LEVEL_CAL,4);
+	Flash_ReadBytes(Flash_buf,CANG1_LEVEL_CAL,4);
 	
 	pTx[16] = Flash_buf[0]>>8;
 	pTx[17] = Flash_buf[0]&0xFF;
@@ -3797,15 +3817,7 @@ uint16_t Level_SetCalvalue(uint8_t* pTx)
 	pTx[20] = Flash_buf[2]>>8;
 	pTx[21] = Flash_buf[2]&0xFF;
 	pTx[22] = Flash_buf[3]>>8;
-	pTx[23] = Flash_buf[3]&0xFF;		
-	pTx[24] = Flash_buf[4]>>8;
-	pTx[25] = Flash_buf[4]&0xFF;
-	pTx[26] = Flash_buf[5]>>8;
-	pTx[27] = Flash_buf[5]&0xFF;	
-	pTx[28] = Flash_buf[6]>>8;
-	pTx[29] = Flash_buf[6]&0xFF;
-	pTx[30] = Flash_buf[7]>>8;
-	pTx[31] = Flash_buf[7]&0xFF;			
+	pTx[23] = Flash_buf[4]&0xFF;		
 
 	
 	if((pTx[16] == pkzq->data_buf[16])&&(pTx[17] == pkzq->data_buf[17])&&(pkzq->data_buf[7] == 0x06))
@@ -3822,18 +3834,6 @@ uint16_t Level_SetCalvalue(uint8_t* pTx)
 		hex_to_float2.arr1[0] = pkzq->data_buf[23];					
 		plevel[2].Level_Cal_zero = hex_to_float2.Ldcal_zero_temp1;
 		__NOP();		
-		hex_to_float2.arr1[3] = pkzq->data_buf[24];
-		hex_to_float2.arr1[2] = pkzq->data_buf[25];
-		hex_to_float2.arr1[1] = pkzq->data_buf[26];
-		hex_to_float2.arr1[0] = pkzq->data_buf[27];					
-		plevel[3].Level_Cal_zero = hex_to_float2.Ldcal_zero_temp1;
-		__NOP();
-		hex_to_float2.arr1[3] = pkzq->data_buf[28];
-		hex_to_float2.arr1[2] = pkzq->data_buf[29];
-		hex_to_float2.arr1[1] = pkzq->data_buf[30];
-		hex_to_float2.arr1[0] = pkzq->data_buf[31];					
-		plevel[4].Level_Cal_zero = hex_to_float2.Ldcal_zero_temp1;
-		__NOP();		
 		//hex_to_float2.Ldcal_zero_temp1 = plevel[2].Level_Cal_zero;
 		return 1;
 	}
@@ -3868,12 +3868,12 @@ uint16_t Tem_SetType(uint8_t* pTx)
 	KZQ_Inf* pkzq = &kzq_inf;
 	uint16_t Flash_buf[20] = {0};
 	
-	Flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17];
+	Flash_buf[0] = pkzq->data_buf[17]<<8|pkzq->data_buf[16];
 	if(pkzq->data_buf[7] == 0x06)
 	Flash_WriteBytes(Flash_buf,ADDR_TEM_TYPE,1);
 	Flash_ReadBytes(Flash_buf,ADDR_TEM_TYPE,1);
-	pTx[16] = Flash_buf[0]>>8;
-	pTx[17] = Flash_buf[0]&0xFF;
+	pTx[17] = Flash_buf[0]>>8;
+	pTx[16] = Flash_buf[0]&0xFF;
 	
 	if(Flash_buf[0] != 0xFFFF)
 		pcang->Temperture = Flash_buf[0];

+ 3 - 2
Core/Src/level.c

@@ -1457,9 +1457,10 @@ static    float V_y1 = 0,V_y2 = 0,H_x1 = 0,H_x2 = 0;
 	 H_x1 = 0;
 	 H_x2 =	0;
 	 H_x = 0;
+		Vt = 0;
 	}
-
-	Vt=(H_x - H_x1)/(H_x2 - H_x1)*(V_y2-V_y1)+V_y1;
+	else
+		Vt=(H_x - H_x1)/(H_x2 - H_x1)*(V_y2-V_y1)+V_y1;
 
 	return Vt;
 		

Plik diff jest za duży
+ 554 - 625
Core/Src/main.c


+ 44 - 42
Core/Src/rkg.c

@@ -44,7 +44,7 @@ void LIB_MemClr(uint8_t* pucDst, uint16_t uiLen)
 ********************************************************************************************************/
 static int32_t AGL_CalcDelta(int32_t ulAngle1, int32_t ulAngle2, int32_t srDir,int32_t srNo)
 {
-	  S_ANGLEDATA* psAD = gs_AngleData;
+		S_ANGLEDATA* psAD = gs_AngleData;
     if(ulAngle1 == 0xFFFF || ulAngle2 == 0xFFFF)
     {
         return 0xFFFF;
@@ -53,9 +53,9 @@ static int32_t AGL_CalcDelta(int32_t ulAngle1, int32_t ulAngle2, int32_t srDir,i
     int jz_angle = 0;
     int rkg_angle = 0;
     if(ulAngle1<18000)
-    jz_angle = ulAngle1;
+        jz_angle = ulAngle1;
     else
-    jz_angle = 36000 - ulAngle1;
+        jz_angle = 36000 - ulAngle1;
 /*
     if(jz_angle>MxMax)
         MxMax = jz_angle;
@@ -64,21 +64,20 @@ static int32_t AGL_CalcDelta(int32_t ulAngle1, int32_t ulAngle2, int32_t srDir,i
 */
     if(jz_angle > 3300)           //基准误差处理
     {
-      jz_angle = 3300;
+        jz_angle = 3300;
     }
-
     if(jz_angle - RefrenceLast > 500)
-    jz_angle = RefrenceLast + 500;
+        jz_angle = RefrenceLast + 500;
     else if(RefrenceLast - jz_angle > 500)
-    jz_angle = RefrenceLast - 500;
+        jz_angle = RefrenceLast - 500;
     RefrenceLast = jz_angle;
     ulAngle1 = jz_angle;
 
 
     if(ulAngle2<18000)
-     rkg_angle = ulAngle2;
+        rkg_angle = ulAngle2;
     else
-     rkg_angle = 36000 - ulAngle2;
+        rkg_angle = 36000 - ulAngle2;
 
 
     if(srDir > 1)
@@ -87,12 +86,14 @@ static int32_t AGL_CalcDelta(int32_t ulAngle1, int32_t ulAngle2, int32_t srDir,i
  //           ulAngle2 = 3000;
  //       else if(ulAngle2> 18000&&ulAngle2<20000)
  //           ulAngle2 = 20000;
+
         if(rkg_angle- XgLast[srNo] > 500)
-        rkg_angle = XgLast[srNo] + 500;
+            rkg_angle = XgLast[srNo] + 500;
         else if(XgLast[srNo] - rkg_angle > 500)
-        rkg_angle = XgLast[srNo] - 500;
+            rkg_angle = XgLast[srNo] - 500;
         XgLast[srNo] = rkg_angle;
         ulAngle2 = rkg_angle;
+        srDir -= 2;
     }
     else                                                    //小盖误差处理
     {
@@ -100,22 +101,24 @@ static int32_t AGL_CalcDelta(int32_t ulAngle1, int32_t ulAngle2, int32_t srDir,i
  //           ulAngle2 = 32700;
  //       else if(ulAngle2>20000 &&ulAngle2<27000)
  //           ulAngle2 = 20000;
+
         if(rkg_angle- DgLast[srNo] > 500)
-        rkg_angle = DgLast[srNo] + 500;
-        else if(DgLast[srNo] - rkg_angle > 500)
-        rkg_angle = DgLast[srNo] - 500;
+            rkg_angle = DgLast[srNo] + 500;
+         else if(DgLast[srNo] - rkg_angle > 500)
+            rkg_angle = DgLast[srNo] - 500;
         DgLast[srNo] = rkg_angle;
+
         ulAngle2 = rkg_angle;
-				if(ulAngle2>=ulAngle1)
-				{
-				 ulAngle2 -= ulAngle1; 
-				 psAD[srNo].uiDG = ulAngle2;
-				}
-				else
-				{
-				 ulAngle1 -= ulAngle2; 	 
-         psAD[srNo].uiDG = ulAngle1;
-				}
+        if(ulAngle2>=ulAngle1)
+        {
+            ulAngle2 -= ulAngle1;
+            psAD[srNo].uiDG = ulAngle2;
+        }
+        else
+        {
+            ulAngle1 -= ulAngle2;
+            psAD[srNo].uiDG = ulAngle1; 
+        }
     }
 
 
@@ -167,7 +170,7 @@ void AGL_CalcDeltaAll(int32_t rkg_addr, uint16_t uiDGXGType)
 		{
 			srNo +=(rkg_addr - 0x30);
 		}
-
+		
 		
     S_DELTA* p = psAD[srNo].sDelta + psAD[srNo].uiPos;
 
@@ -178,6 +181,7 @@ void AGL_CalcDeltaAll(int32_t rkg_addr, uint16_t uiDGXGType)
         {
             p->iXG = AGL_CalcDelta(psAD[0].uiRefrence, psAD[srNo].uiXG, (uiDGXGType & BIT7)+2,srNo);
         }
+
         if(psAD[rkg_addr - 0x30].uiDG != 0xFFFFFFFF)
         {
             p->iDG = AGL_CalcDelta(psAD[0].uiRefrence, psAD[srNo].uiDG, uiDGXGType & BIT6,srNo);
@@ -222,23 +226,21 @@ void RKG_Init(void)
 		Flash_ReadBytes(Flash_buf,ADDR_RKGSENSOR_TYPE,1);
 		if(Flash_buf[0] != 0xFFFF)
 			pcang->RKG_Type = Flash_buf[0];
+		
 		Flash_ReadBytes(Flash_buf,ADDR_RKG_THRESHOLD,1);
-		if(Flash_buf[0] == 0xFFFF)
+		if(Flash_buf[0] != 0xFFFF)
 		{
-			prkg[0].RKG_Threshold = 600;//slm
-			prkg[1].RKG_Threshold = 600;//slm
-			prkg[2].RKG_Threshold = 600;//slm		
-			prkg[3].RKG_Threshold = 600;//slm		
-			prkg[4].RKG_Threshold = 600;//slm					
+            for(i=0;i<pcang->Cang_Num+1;++i)
+            {
+                prkg[i].RKG_Threshold = 900;//slm
+            }
 		}
 		else
 		{
-			prkg[0].RKG_Threshold = Flash_buf[0];//slm
-			prkg[1].RKG_Threshold = Flash_buf[0];//slm
-			prkg[2].RKG_Threshold = Flash_buf[0];//slm		
-			prkg[3].RKG_Threshold = Flash_buf[0];//slm
-			prkg[4].RKG_Threshold = Flash_buf[0];//slm					
-		
+            for(i=0;i<pcang->Cang_Num+1;++i)
+            {
+                prkg[i].RKG_Threshold = Flash_buf[0];//slm
+            }	
 		}
 			
     for(i=0; i<ANGLE_DEVICE_CNT; i++, p++)
@@ -287,7 +289,7 @@ void AGL_AddNewData(uint16_t uiAngle,int32_t rkg_addr)
 {
 		S_ANGLEDATA* psAD = gs_AngleData;
 		
-    if(rkg_addr == 0x30)																		//基准
+        if(rkg_addr == 0x30)																		//基准
 			psAD[rkg_addr - 0x30].uiRefrence = uiAngle;  
 		else if(rkg_addr >= 0x31 || rkg_addr <= 0x3f)						//大盖
 			psAD[rkg_addr - 0x30].uiDG = uiAngle;
@@ -316,9 +318,9 @@ void AGL_JudgeState(void)
 
 		for(i=1; i <= RKG_Max; i++)                       //SENSOR_DEEP:人孔大盖传感器数量,00可能做为基准传感器,所有从1开始循环
     {
-			prkg[i].RKDG_Error = 0;
+			//prkg[i].RKDG_Error = 0;
 
-			prkg[i].RKXG_Error = 0;
+			//prkg[i].RKXG_Error = 0;
 
 //			prkg[i].RKDG_State = 0;
 //			prkg[i].RKDG_StateCnt = 0;	
@@ -386,7 +388,7 @@ void AGL_JudgeState(void)
 
 			if(prkg[i].RKXG_ErrorCnt >= prkg[i].RKG_StateKeepNum)				//判断人孔小盖
 			{
-					prkg[i].RKXG_Error = 0;
+					prkg[i].RKXG_Error = 1;
 			}
 			else if(prkg[i].RKXG_StateCnt >= prkg[i].RKG_StateKeepNum)
 			{
@@ -396,7 +398,7 @@ void AGL_JudgeState(void)
 			
 			if(prkg[i].RKDG_ErrorCnt >= rkg_erro_uplimit)							//判断人口大盖prkg[i].RKG_StateKeepNum
 			{
-				//	prkg[i].RKDG_Error = 1;
+			//		prkg[i].RKDG_Error = 1;
 			}
 			
 //			if(prkg[i].RKDG_StateCnt >= prkg[i].RKG_StateKeepNum)

+ 11 - 9
Core/Src/stm32f1xx_it.c

@@ -266,21 +266,23 @@ void USART1_IRQHandler(void)
   /* USER CODE BEGIN USART1_IRQn 0 */
 	extern uint8_t USART1_RX_BUF002[Uart2_BUF_SIZE];
 
-  /* USER CODE END USART1_IRQn 0 */
-  HAL_UART_IRQHandler(&huart1);
-  /* USER CODE BEGIN USART1_IRQn 1 */
+  
 	
 	if(RESET != __HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE))   //判断是否是空闲中断
 	{
 		__HAL_UART_CLEAR_IDLEFLAG(&huart1);                     //清楚空闲中断标志(否则会一直不断进入中断)
 		HAL_UART_DMAStop(&huart1);  
-		data_lengthU1  = Uart1_BUF_SIZE - hdma_usart1_rx.Instance->CNDTR;//--
+		data_lengthU1  = Uart1_BUF_SIZE - hdma_usart1_rx.Instance->CNDTR;
 		memcpy(USART1_RX_BUF002,USART1_RX_BUF,data_lengthU1);	
-		memset(USART1_RX_BUF,0,Uart1_BUF_SIZE);
+		//memset(USART1_RX_BUF,0,Uart1_BUF_SIZE);
 		HAL_UART_Receive_DMA(&huart1,USART1_RX_BUF,Uart1_BUF_SIZE); 
 		flagU1Rx=1;
 
 	}
+	
+	/* USER CODE END USART1_IRQn 0 */
+  HAL_UART_IRQHandler(&huart1);
+  /* USER CODE BEGIN USART1_IRQn 1 */
 				
 
   /* USER CODE END USART1_IRQn 1 */
@@ -294,7 +296,7 @@ void USART2_IRQHandler(void)
   /* USER CODE BEGIN USART2_IRQn 0 */
 	extern uint8_t USART2_RX_BUF002[Uart2_BUF_SIZE];
   /* USER CODE END USART2_IRQn 0 */
-  HAL_UART_IRQHandler(&huart2);
+  //HAL_UART_IRQHandler(&huart2);
   /* USER CODE BEGIN USART2_IRQn 1 */
  
 	
@@ -306,14 +308,14 @@ void USART2_IRQHandler(void)
 						HAL_UART_DMAStop(&huart2);  
 						data_lengthU2  = Uart2_BUF_SIZE - hdma_usart2_rx.Instance->CNDTR;
 						memcpy(USART2_RX_BUF002,USART2_RX_BUF,data_lengthU2);	
-						memset(USART2_RX_BUF,0,Uart2_BUF_SIZE);
+						//memset(USART2_RX_BUF,0,Uart2_BUF_SIZE);
 						HAL_UART_Receive_DMA(&huart2,USART2_RX_BUF,Uart2_BUF_SIZE); 
 					  flagU2Rx=1;
 					
         }
     }
 
-
+		HAL_UART_IRQHandler(&huart2);
   /* USER CODE END USART2_IRQn 1 */
 }
 
@@ -334,7 +336,7 @@ void USART3_IRQHandler(void)
 						HAL_UART_DMAStop(&huart3);  
 						data_lengthU3  = Uart3_BUF_SIZE - hdma_usart3_rx.Instance->CNDTR;
 						memcpy(USART3_RX_BUF002,USART3_RX_BUF,data_lengthU3);	
-						memset(USART3_RX_BUF,0,Uart3_BUF_SIZE);
+						//memset(USART3_RX_BUF,0,Uart3_BUF_SIZE);
 						HAL_UART_Receive_DMA(&huart3,USART3_RX_BUF,Uart3_BUF_SIZE); 
 					  flagU3Rx=1;
 					

+ 1 - 1
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c

@@ -2937,7 +2937,7 @@ static HAL_StatusTypeDef UART_Transmit_IT(UART_HandleTypeDef *huart)
       huart->Instance->DR = (uint8_t)(*huart->pTxBuffPtr++ & (uint8_t)0x00FF);
     }
 
-    if (--huart->TxXferCount == 0U)
+    if ((--huart->TxXferCount == 0U) || (huart->TxXferCount > 65530U))
     {
       /* Disable the UART Transmit Complete Interrupt */
       __HAL_UART_DISABLE_IT(huart, UART_IT_TXE);

+ 1 - 6
MDK-ARM/RTE/_caijiqiV001/RTE_Components.h

@@ -1,6 +1,6 @@
 
 /*
- * Auto generated Run-Time-Environment Component Configuration File
+ * Auto generated Run-Time-Environment Configuration File
  *      *** Do not modify ! ***
  *
  * Project: 'caijiqiV001' 
@@ -11,10 +11,5 @@
 #define RTE_COMPONENTS_H
 
 
-/*
- * Define the Device Header File: 
- */
-#define CMSIS_device_header "stm32f10x.h"
-
 
 #endif /* RTE_COMPONENTS_H */

Plik diff jest za duży
+ 46 - 357
MDK-ARM/caijiqiV001.uvguix.Administrator


+ 1 - 1
MDK-ARM/caijiqiV001.uvoptx

@@ -155,7 +155,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>ST-LINKIII-KEIL_SWO</Key>
-          <Name>-U32FF6F064247363333581557 -O8399 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO31 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RE$Flash\STM32F10x_512.FLM)</Name>
+          <Name>-U32FF6F064247363333581557 -O8399 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO31 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RE$Flash\STM32F10x_512.FLM)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
       <Breakpoint/>

+ 6 - 5
MDK-ARM/caijiqiV001.uvprojx

@@ -10,13 +10,13 @@
       <TargetName>caijiqiV001</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
       <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
           <Device>STM32F103RE</Device>
           <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F1xx_DFP.2.1.0</PackID>
+          <PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
           <PackURL>http://www.keil.com/pack/</PackURL>
           <Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") TZ</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
@@ -185,6 +185,7 @@
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
             <RvdsMve>0</RvdsMve>
+            <RvdsCdeCp>0</RvdsCdeCp>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>8</StupSel>
@@ -351,7 +352,7 @@
             <NoWarn>0</NoWarn>
             <uSurpInc>0</uSurpInc>
             <useXO>0</useXO>
-            <uClangAs>0</uClangAs>
+            <ClangAsOpt>4</ClangAsOpt>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define></Define>
@@ -545,7 +546,7 @@
                 <NoWarn>2</NoWarn>
                 <uSurpInc>2</uSurpInc>
                 <useXO>2</useXO>
-                <uClangAs>2</uClangAs>
+                <ClangAsOpt>0</ClangAsOpt>
                 <VariousControls>
                   <MiscControls></MiscControls>
                   <Define></Define>
@@ -1571,7 +1572,7 @@
                 <NoWarn>2</NoWarn>
                 <uSurpInc>2</uSurpInc>
                 <useXO>2</useXO>
-                <uClangAs>2</uClangAs>
+                <ClangAsOpt>0</ClangAsOpt>
                 <VariousControls>
                   <MiscControls></MiscControls>
                   <Define></Define>