yidong.fan 3 mesiacov pred
rodič
commit
73672d8de8

+ 4 - 35
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c

@@ -238,41 +238,10 @@ void  __attribute__((__interrupt__,no_auto_psv)) _U2RXInterrupt(void)
 void  __attribute__((__interrupt__,no_auto_psv)) _U3RXInterrupt(void)
 {
 	IFS5bits.U3RXIF = 0;                                                
-	g_ucU1RX_Data[g_uiUart1_No] = U3RXREG;                               
-    if(g_BUSY1 == 1) return;
-    if(g_ucHeaderFlag1 == 0){                                             
-		if(g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD){                  
-            g_ucHeaderFlag1 = 1;                                 
-            g_ucU1RX_Data[0] = FRAME_HEAD;                             
-            g_uiUart1_No = 1;                                        
-		}else{
-            g_BUSY1 = 0;                                                     
-        }
-	}else if(g_ucHeaderFlag1 == 1){                                          
-		g_uiUart1_No++;
-    } 
-    if(g_uiUart1_No > (FRAME_LTHH_INDEX+1)){                                                           
-        g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX]; 
-        if(g_uiUart1_No == g_uiLth1){                                     
-            g_ulRSUM1 = Check(g_ucU1RX_Data,g_uiLth1-1);                  
-            g_ucCRC1 = (unsigned char)g_ulRSUM1;                                //
-            if(g_ucCRC1 == g_ucU1RX_Data[g_uiLth1-1]){                 
-                g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];                    
-                g_ucUART1_flag  = 1;                                 
-                g_ulRSUM1       = 0;                             
-                g_uiUart1_No    = 0;                             
-                g_ucHeaderFlag1 = 0;                                
-                g_BUSY1         = 1;                                    
-            }else{
-                memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));      
-                g_BUSY1 = 0;                                                 
-            }        
-        }else if(g_uiUart1_No > g_uiLth1){                                  
-            g_uiUart1_No    = 0;                                             
-            g_ucHeaderFlag1 = 0;                                        
-            g_BUSY1         = 0;                                       
-        }
-    }
+    g_ucU3RX_Buf[uart3_last++] = U3RXREG;
+	if(uart3_last == MAX_UART_BUFFER_SIZE){
+		uart3_last = 0;
+	}
 }
 
 /*******************************************************************************

+ 7 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.h

@@ -74,6 +74,8 @@
 #define     ZLENTH                   14000
 #define     ZLENTH1                  134
 #define     ZLENTH2                  198
+#define     MAX_UART_BUFFER_SIZE                  512
+
 
 //оƬ¼ì²â
 typedef union {
@@ -136,6 +138,11 @@ EXTERN_UART unsigned int g_uiLth1,GlobalNum;
 EXTERN_UART unsigned long g_ulRSUM1;
 EXTERN_UART unsigned char g_ucCRC1;
 
+EXTERN_UART unsigned char g_ucU3RX_Buf[512];
+EXTERN_UART uint32_t   uart3_header = 0;
+EXTERN_UART uint32_t   uart3_last = 0;
+
+
 EXTERN_UART unsigned char g_ucRealTemp_Chanel;
 EXTERN_UART unsigned char g_ucPCRDATA_Chanel;
 EXTERN_UART unsigned int  uiAD_Max[16];