Kaynağa Gözat

1.修改了usart3的DMA缓冲区长度的BUG
2.倾角地址修改为1/3/5/7/9

zhuzl 3 yıl önce
ebeveyn
işleme
0ef3f8da6d

+ 83 - 85
Core/Src/main.c

@@ -1510,7 +1510,7 @@ static void MX_USART3_UART_Init(void)
 
 
 
-		HAL_UART_Receive_DMA(&huart3,USART3_RX_BUF,Uart2_BUF_SIZE);
+		HAL_UART_Receive_DMA(&huart3,USART3_RX_BUF,Uart3_BUF_SIZE);
 
   /* USER CODE END USART3_Init 2 */
 
@@ -1703,7 +1703,8 @@ void StartTask02(void *argument)				 															//卸
   {
     osDelay(10);    																								  //以ms为单位
     //HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0);
-	  HAL_GPIO_TogglePin(WDI_sp706_kanmemgou_GPIO_Port, WDI_sp706_kanmemgou_Pin);			
+	  HAL_GPIO_TogglePin(WDI_sp706_kanmemgou_GPIO_Port, WDI_sp706_kanmemgou_Pin);	
+		//	continue;
 		if(Flash_Change)																									//如果有对Flash进行改动,则重新计算xyfaddr_max
 		{
 			xyfaddr_max = 0;
@@ -2181,6 +2182,37 @@ void StartTask03(void *argument)															//
 			{
 				if((pcang->RKG_DG != 0) && (pcang->RKG_Type!=2))
 				{
+					if(pcang->RKG_Type == 0)
+					{	
+						if(CMD_RKG[0] == 0x1)
+						{
+							if(i003 >= rkgaddr_max)
+								i003 = 0;
+							++i003;
+							CMD_RKG[0] = 1+i003*2;
+							prkg[i003].RTData_Num++; 
+						}
+						else
+						{
+							CMD_RKG[0] = 0x1;
+							prkg[0].RTData_Num++; 
+						}	
+					}
+					else					
+					{
+						prkg[CMD_RKG[0] - 0x30].RTData_Num++; 
+
+						if(CMD_RKG[0] - 0x30 < rkgaddr_max)
+						{
+							++i003;
+							CMD_RKG[0]=0x30+i003;
+						}	
+						else
+						{
+							CMD_RKG[0] = 0x31;
+							i003 = 1;
+						}
+					}
 					ModbusCRC = LIB_CRC_MODBUS(CMD_RKG,6);
 					CMD_RKG[6] = ModbusCRC>>8;
 					CMD_RKG[7] = ModbusCRC&0xff;
@@ -2207,26 +2239,8 @@ void StartTask03(void *argument)															//
 					}
 					else
 #endif					
-						prkg[CMD_RKG[0] - 0x30].RTData_Num++; 
-
-					if(pcang->RKG_Type == 0)
-					{	
-						if(CMD_RKG[0] == 0x30)
-						{
-							CMD_RKG[0] += i003++;
-							if(CMD_RKG[0] - 0x30 >= rkgaddr_max)//rkgaddr_max
-								i003 = 1;
-						}
-						else
-							CMD_RKG[0] = 0x30;
-					}
-					else					
-					{
-						if(CMD_RKG[0] - 0x30 < rkgaddr_max)//rkgaddr_max
-							CMD_RKG[0]++;
-						else
-							CMD_RKG[0] = 0x31;
-					}
+					
+					
 				}
 				else 
 					i001 = 3;
@@ -2421,42 +2435,10 @@ void StartTask03(void *argument)															//
 			receive_error = 0;
 			rx_len = USART1_RX_BUF002[2];
 			ModbusCRC = USART1_RX_BUF002[(3+rx_len)]<<8;
-			ModbusCRC |= USART1_RX_BUF002[(3+rx_len+1)];
-
-	  //if((USART1_RX_BUF002[0] == 0x0D)&&(USART1_RX_BUF002[1] == 0x0A))   //slm
-		////head = 2;
-		//	else
-		//	head = 0;
-#if 0
-			if(USART1_RX_BUF002[0]!=0x31)
-			{
-				prkg[1].RKDG_ErrorCnt++;
-			  if(prkg[1].RKDG_ErrorCnt>200)
-				{
-					prkg[1].RKDG_ErrorCnt = 201;
-				  prkg[1].RKDG_Error = 1;
-
-				}
-			}
+			ModbusCRC |= USART1_RX_BUF002[(3+rx_len+1)];			
 			
-
-			if(USART1_RX_BUF002[0]!=0x32)
+			if((USART1_RX_BUF002[head+0] >= 0x30 && USART1_RX_BUF002[head+0] <= 0x3F) || (USART1_RX_BUF002[head+0] >= 0x1 && USART1_RX_BUF002[head+0] <= 0x10))        //人孔大盖数据   地址0x30为基准传感器
 			{
-				prkg[2].RKDG_ErrorCnt++;
-			  if(prkg[2].RKDG_ErrorCnt>200)
-				{
-					prkg[2].RKDG_ErrorCnt = 201;					
-				  prkg[2].RKDG_Error = 1;	
-				}
-			}
-#endif			
-			
-			if(USART1_RX_BUF002[head+0] >= 0x30 && USART1_RX_BUF002[head+0] <= 0x3F)        //人孔大盖数据   地址0x30为基准传感器
-			{
-			//  rx_len = USART1_RX_BUF002[2];
-			//  ModbusCRC1 = USART1_RX_BUF002[(3+rx_len)+1]<<8;
-			//  ModbusCRC1 |= USART1_RX_BUF002[(3+rx_len)];
-				//prkg[USART1_RX_BUF002[head+0]-0x30].RTData_Num = 1;
 				if(USART1_RX_BUF002[head+1]!=0x03&&USART1_RX_BUF002[head+1]!=0x06)              //校验读写属性
 				{
 					receive_error = 1;	
@@ -2467,7 +2449,6 @@ void StartTask03(void *argument)															//
 				}
 				else if(ModbusCRC != LIB_CRC_MODBUS(USART1_RX_BUF002,7))		//校验CRC
 				{					
-				//	pcang->CRC2 = LIB_CRC_MODBUS(USART1_RX_BUF002,7);
 					receive_error = 1;	
 				}
 //				if((pcang->RKG_Type == 0)&&(USART1_RX_BUF002[head]>=0x30)&&(USART1_RX_BUF002[head] <=0x4F))
@@ -2476,16 +2457,33 @@ void StartTask03(void *argument)															//
 //					RKG_angle = (USART1_RX_BUF002[head+3]<<8)|USART1_RX_BUF002[head+4];
 				if((USART1_RX_BUF002[head+1] == 0x03)&&(receive_error == 0))      //读取数据返回
 				{//童赟    磁电编码    磁编码  人孔盖
-					prkg[USART1_RX_BUF002[head]-0x30].RKDG_ErrorCnt = 0;
-					prkg[USART1_RX_BUF002[head]-0x30].RKDG_Error=0;
-					//prkg[USART1_RX_BUF002[head]-0x30].RTData_Num = 1;
-					AGL_AddNewData(RKG_angle,USART1_RX_BUF002[head]);   
+					if(USART1_RX_BUF002[head]==1)
+					{
+						prkg[0].RKDG_ErrorCnt = 0;
+						prkg[0].RKDG_Error=0;
+					}
+					else
+					{
+						prkg[i003].RKDG_ErrorCnt = 0;
+						prkg[i003].RKDG_Error=0;
+					}
 					
+					if(USART1_RX_BUF002[head]==1)
+					{
+						AGL_AddNewData(RKG_angle,0);
+					}
+					else
+					{
+						AGL_AddNewData(RKG_angle,i003);
+					}
+					   
+#if 0					
 					//邵磊明修改  20211027    从rkg.c剪切到此处
-					if(psATsk3[USART1_RX_BUF002[head]-0x30].uiDG < 0 ||psATsk3[USART1_RX_BUF002[head]-0x30].uiDG >= 27000)//角度
+					if(psATsk3[i003].uiDG < 0 ||psATsk3[USART1_RX_BUF002[head]-0x30].uiDG >= 27000)//角度
 					{
 							prkg[USART1_RX_BUF002[head]-0x30].RKDG_ErrorCnt++;  
 					}
+#endif					
 					
 				//	if( - psATsk3[USART1_RX_BUF002[head]-0x30].uiDG > prkg->RKG_Threshold || psATsk3[USART1_RX_BUF002[head]-0x30].uiDG > prkg->RKG_Threshold)
 				//			prkg[USART1_RX_BUF002[head]-0x30].RKDG_StateCnt++;
@@ -2495,7 +2493,9 @@ void StartTask03(void *argument)															//
 					
 					
 					if(pcang->RKG_Type == 0)
+					{
 						AGL_CalcDeltaAll(USART1_RX_BUF002[head],0);	
+					}	
 #if  0																																		   //倾角大盖计算
 					if(rkdg_cnt < RKG_BUF_DEP)
 					{
@@ -2515,24 +2515,28 @@ void StartTask03(void *argument)															//
 					}
 #endif					
 				//李伟修改  20211027    从rkg.c剪切到此处;开始
-					if (psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG >= 0 || psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG <= 27000) //角度
+					if (USART1_RX_BUF002[head] != 1)
 					{
-						if (-psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG > prkg->RKG_Threshold || psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG > prkg->RKG_Threshold)
-							prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt++;
-						else
-							prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt = 0;
-
-						if (prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt >= prkg[USART1_RX_BUF002[head] - 0x30].RKG_StateKeepNum)
+						if (psATsk3[i003].uiDG >= 0 || psATsk3[i003].uiDG <= 27000) //角度
 						{
-							// RisingEdge++;
-							prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt = prkg[USART1_RX_BUF002[head] - 0x30].RKG_StateKeepNum;
-							prkg[USART1_RX_BUF002[head] - 0x30].RKDG_State = 1;
-						}
-						else
-						{
-							prkg[USART1_RX_BUF002[head] - 0x30].RKDG_State = 0;
+							if (-psATsk3[i003].uiDG > prkg->RKG_Threshold || psATsk3[i003].uiDG > prkg->RKG_Threshold)
+								prkg[i003].RKDG_StateCnt++;
+							else
+								prkg[i003].RKDG_StateCnt = 0;
+
+							if (prkg[i003].RKDG_StateCnt >= prkg[i003].RKG_StateKeepNum)
+							{
+								// RisingEdge++;
+								prkg[i003].RKDG_StateCnt = prkg[i003].RKG_StateKeepNum;
+								prkg[i003].RKDG_State = 1;
+							}
+							else
+							{
+								prkg[i003].RKDG_State = 0;
+							}
 						}
 					}
+
 				//李伟修改  20211027    从rkg.c剪切到此处;开始	
 					i001 = 3;
 					continue;
@@ -2751,19 +2755,13 @@ void StartTask03(void *argument)															//
 			{
 				if(pcang->RKG_Type == 0)
 				{
-					if(CMD_RKG[0] == 0x30)
+					if(CMD_RKG[0] == 0x1)
 					{
-						if(i003==1)
-							i = rkgaddr_max;
-						else if(i003)
-							i = i003-1;
-						else
-							i = 1;
-
+						i = 0;
 					}
 					else
 					{
-						i = 0;
+						i = i003;
 					}	
 				}
 				else

+ 20 - 3
Core/Src/rkg.c

@@ -168,7 +168,16 @@ void AGL_CalcDeltaAll(int32_t rkg_addr, uint16_t uiDGXGType)
 		}
 		else
 		{
-			srNo +=(rkg_addr - 0x30);
+			//srNo +=(rkg_addr - 0x30);
+            if(rkg_addr==1)
+                srNo=0;
+            else if(rkg_addr>=30)
+            {
+                srNo +=(rkg_addr - 0x30);
+            }else
+            {
+                srNo = rkg_addr/2;
+            }
 		}
 		
 		
@@ -228,7 +237,7 @@ void RKG_Init(void)
 			pcang->RKG_Type = Flash_buf[0];
 		
 		Flash_ReadBytes(Flash_buf,ADDR_RKG_THRESHOLD,1);
-		if(Flash_buf[0] != 0xFFFF)
+		if(Flash_buf[0] == 0xFFFF)
 		{
             for(i=0;i<pcang->Cang_Num+1;++i)
             {
@@ -288,13 +297,21 @@ void AGL_Calibration(int32_t ulAngle1, int32_t ulAngle2)
 void AGL_AddNewData(uint16_t uiAngle,int32_t rkg_addr)
 {
 		S_ANGLEDATA* psAD = gs_AngleData;
-		
+#if 0		
         if(rkg_addr == 0x30)																		//基准
 			psAD[rkg_addr - 0x30].uiRefrence = uiAngle;  
 		else if(rkg_addr >= 0x31 || rkg_addr <= 0x3f)						//大盖
 			psAD[rkg_addr - 0x30].uiDG = uiAngle;
 		else if(rkg_addr >= 0x41 || rkg_addr <= 0x4f)						//小盖
 			psAD[rkg_addr - 0x30].uiXG = uiAngle;	
+#else
+		if(rkg_addr == 0)																		//基准
+			psAD[0].uiRefrence = uiAngle;  
+		else if(rkg_addr >= 0x1 && rkg_addr <= 0x10)						//大盖
+			psAD[rkg_addr].uiDG = uiAngle;
+		else if(rkg_addr >= 0x41 && rkg_addr <= 0x4f)						//小盖
+			psAD[rkg_addr - 0x30].uiXG = uiAngle;	
+#endif            
 }
 
 /*******************************************************************************************************

+ 1 - 1
Core/Src/usart.c

@@ -267,7 +267,7 @@ void UsartReceive_IDLE(UART_HandleTypeDef *huart)
 					
  
 					
-            memset(USART_RX_BUF, 0x00, BUF_SIZE);
+            //memset(USART_RX_BUF, 0x00, BUF_SIZE);
         }
 				
 				/*

+ 60 - 5
MDK-ARM/caijiqiV001.uvoptx

@@ -162,9 +162,9 @@
         <Bp>
           <Number>0</Number>
           <Type>0</Type>
-          <LineNumber>828</LineNumber>
+          <LineNumber>1904</LineNumber>
           <EnabledFlag>1</EnabledFlag>
-          <Address>134276368</Address>
+          <Address>134248856</Address>
           <ByteObject>0</ByteObject>
           <HtxType>0</HtxType>
           <ManyObjects>0</ManyObjects>
@@ -173,14 +173,65 @@
           <BreakIfRCount>1</BreakIfRCount>
           <Filename>D:\zhuzl鐢佃剳澶囦唤\zhuzl_work\Collect\Collect\Core\Src\main.c</Filename>
           <ExecCommand></ExecCommand>
-          <Expression>\\DZQF_CJB09A0_20220209_Temp1\../Core/Src/main.c\828</Expression>
+          <Expression>\\DZQF_CJB09A0_20220209_Temp1\../Core/Src/main.c\1904</Expression>
+        </Bp>
+        <Bp>
+          <Number>1</Number>
+          <Type>0</Type>
+          <LineNumber>185</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134222344</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>D:\zhuzl鐢佃剳澶囦唤\zhuzl_work\Collect\Collect\Core\Src\stm32f1xx_it.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\DZQF_CJB09A0_20220209_Temp1\../Core/Src/stm32f1xx_it.c\185</Expression>
         </Bp>
       </Breakpoint>
       <WatchWindow1>
         <Ww>
           <count>0</count>
           <WinNumber>1</WinNumber>
-          <ItemText>USART2_RX_BUF002</ItemText>
+          <ItemText>USART1_RX_BUF002</ItemText>
+        </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>gs_AngleData</ItemText>
+        </Ww>
+        <Ww>
+          <count>2</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>kzq_inf</ItemText>
+        </Ww>
+        <Ww>
+          <count>3</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>cang_inf</ItemText>
+        </Ww>
+        <Ww>
+          <count>4</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>rkgaddr_max</ItemText>
+        </Ww>
+        <Ww>
+          <count>5</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>i003</ItemText>
+        </Ww>
+        <Ww>
+          <count>6</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>rkg_inf</ItemText>
+        </Ww>
+        <Ww>
+          <count>7</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>USART3_RX_BUF002</ItemText>
         </Ww>
       </WatchWindow1>
       <WatchWindow2>
@@ -298,6 +349,10 @@
           <Name>System Viewer\USART2</Name>
           <WinId>35905</WinId>
         </Entry>
+        <Entry>
+          <Name>System Viewer\USART3</Name>
+          <WinId>35904</WinId>
+        </Entry>
       </SystemViewers>
       <DebugDescription>
         <Enable>0</Enable>
@@ -351,7 +406,7 @@
       <GroupNumber>2</GroupNumber>
       <FileNumber>3</FileNumber>
       <FileType>1</FileType>
-      <tvExp>1</tvExp>
+      <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>../Core/Src/main.c</PathWithFileName>

+ 1 - 1
MDK-ARM/caijiqiV001.uvprojx

@@ -275,7 +275,7 @@
               </OCR_RVCT3>
               <OCR_RVCT4>
                 <Type>1</Type>
-                <StartAddress>0x8020000</StartAddress>
+                <StartAddress>0x8000000</StartAddress>
                 <Size>0x20000</Size>
               </OCR_RVCT4>
               <OCR_RVCT5>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2293 - 2293
MDK-ARM/caijiqiV001/DZQF-CJB09A0_20220209_Temp1.hex