ソースを参照

通信板双串口

yidong.fan 4 ヶ月 前
コミット
69f4ab4c05

+ 1 - 7
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/private.xml

@@ -78,12 +78,6 @@
     </editor-bookmarks>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
         <group name="source"/>
-        <group>
-            <file>file:/F:/library/source/WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Motor.c</file>
-            <file>file:/F:/library/source/WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/command.c</file>
-            <file>file:/F:/library/source/WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/main.c</file>
-            <file>file:/F:/library/source/WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Delay.c</file>
-            <file>file:/F:/library/source/WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/system.c</file>
-        </group>
+        <group/>
     </open-files>
 </project-private>

+ 1 - 4
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/private.xml

@@ -2,9 +2,6 @@
 <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
-        <group>
-            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c</file>
-            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.c</file>
-        </group>
+        <group/>
     </open-files>
 </project-private>

+ 2 - 2
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c

@@ -34,10 +34,10 @@ void Pin_Init(){
 	RPINR18bits.U1RXR = 48; //上电默认屏幕使用    
 	RPINR19bits.U2RXR= 43;
 	RPINR17bits.U3RXR = 29;
-	RPINR27bits.U4RXR = 17;//串口4收 映射到RF5 原理图上PIC_FXD1
+//	RPINR27bits.U4RXR = 48;
     
 	
-    _RP10R = 24;  //串口4发 映射到RF4 原理图上PIC_TXD1
+//    _RP10R = 3;  //上电默认PC使用
     _RP1R = 3; //上电默认屏幕使用    
 	_RP5R = 5;
 	_RP14R = 22 ;

+ 152 - 519
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Uart.c

@@ -4,26 +4,15 @@
 /*******************************************************************************
  * 函数名称:Check
  *******************************************************************************/
-#define OUTTIME2S 200
-#define OUTTIME60S 6000
-unsigned char g_ucTX_DMA[MAX_UART_BUFFER_SIZE] __attribute__((eds));
-
-uint32_t   uart1_header = 0;
-uint32_t   uart1_last = 0;
-uint32_t   uart4_header = 0;
-uint32_t   uart4_last = 0;
-uint32_t   uart1_recOK = 0;
-
-
-extern unsigned int ms10_conter;
-unsigned int Check(unsigned char *p, unsigned char num) {
-  unsigned char i = 0;
-  unsigned int uiCheckSum = 0;
-  for (i = 0; i < num; i++) {
-    uiCheckSum += *p;
-    p++;
-  }
-  return uiCheckSum;
+unsigned int Check(unsigned char *p,unsigned char num)
+{
+	unsigned char i=0;
+    unsigned int uiCheckSum=0;
+	for(i=0;i<num;i++){
+		uiCheckSum += *p;
+		p++;
+	}
+    return uiCheckSum;
 }
 
 void InitUart1(void){	  
@@ -33,47 +22,21 @@ void InitUart1(void){
     U1MODEbits.ABAUD = 0;   
     U1MODEbits.LPBACK = 0;  
 
-  //    U1BRG = 31;
-  //    U1BRG = 259;
-  U1BRG = 0x67;
-
-  U1STAbits.UTXISEL1 = 0;
-  U1STAbits.UTXISEL0 = 1;
-  U1STAbits.URXISEL = 0;
-
-  IEC0bits.U1TXIE = 0;
-  IEC0bits.U1RXIE = 1;
-  U1MODEbits.UARTEN = 1;
-  U1STAbits.UTXEN = 1;
-  IPC2bits.U1RXIP = 7;
-  IPC3bits.U1TXIP = 7;
-
-
-
-  _U1TXIF = 0; // Clear UART TX IF to prevent erroneous DMA operation
-  // Configure DMA channel
-  DMACH5 = 0;
-  DMACH5bits.SAMODE = 1; // Source Address incremented after operation
-  DMACH5bits.DAMODE = 0; // Destination Address unchanged after operation
-  DMACH5bits.TRMODE = 0; // One Shot Mode
-  DMACH5bits.SIZE = 1;   // Transfer size of 1 byte
-
-  DMAINT5 = 0;
-  DMAINT5bits.CHSEL = 68; // DMA Trigger is U4 TX Interrupt
-
-  DMADST5 = (uint16_t)&U1TXREG;
-
-  // Set up interrupts and interrupt priorities as desired
-  _DMA5IF = 0;
-  _DMA5IE = 0;
-  _DMA5IP = 3;
-
-  _U1RXIF = 0;
-  _U1RXIE = 1;
-  _U1RXIP = 3;
-
-
-  
+    //    U1BRG = 31;     
+//    U1BRG = 259;           
+    U1BRG =0x67;           
+    
+    U1STAbits.UTXISEL0 = 1;
+    U1STAbits.UTXISEL1 = 0;
+    U1STAbits.URXISEL = 0;
+
+    IEC0bits.U1TXIE = 0;
+    IEC0bits.U1RXIE = 1;
+    U1MODEbits.UARTEN = 1;
+    U1STAbits.UTXEN = 1;
+    IPC2bits.U1RXIP = 7;
+    IPC3bits.U1TXIP = 7;    
+   
 }
 void InitUart2(void){
 	
@@ -98,71 +61,51 @@ void InitUart2(void){
     IPC7bits.U2TXIP = 6;      
     
 }
-void InitUart3(void) {
-
-  U3MODEbits.STSEL = 0;
-  U3MODEbits.PDSEL = 0;
-  U3MODEbits.BRGH = 0;
-  U3MODEbits.ABAUD = 0;
-  U3MODEbits.LPBACK = 0;
-
-  U3BRG = 0x67;
-
-  U3STAbits.UTXISEL1 = 0;
-  U3STAbits.UTXISEL0 = 1;
-  U3STAbits.URXISEL = 0;
-
-  IEC5bits.U3TXIE = 0;
-  IEC5bits.U3RXIE = 1;
-  U3MODEbits.UARTEN = 1;
-  U3STAbits.UTXEN = 1;
-  IPC20bits.U3RXIP = 6;
-  IPC20bits.U3TXIP = 6;
+void InitUart3(void){
+	
+	
+	U3MODEbits.STSEL=0;
+	U3MODEbits.PDSEL=0;
+	U3MODEbits.BRGH=0;
+	U3MODEbits.ABAUD=0;
+	U3MODEbits.LPBACK=0;
+	
+	U3BRG = 0x67;
+	
+	U3STAbits.UTXISEL1=0;
+	U3STAbits.UTXISEL0=1;
+	U3STAbits.URXISEL=1;
+	
+    IEC5bits.U3TXIE = 0;
+    IEC5bits.U3RXIE = 1;    
+	U3MODEbits.UARTEN=1;
+	U3STAbits.UTXEN=1;
+    IPC20bits.U3RXIP = 6;
+    IPC20bits.U3TXIP = 6;      
+    
 }
-void InitUart4(void) {
-
-  U4MODEbits.STSEL = 0;
-  U4MODEbits.PDSEL = 0;
-  U4MODEbits.BRGH = 0;
-  U4MODEbits.ABAUD = 0;
-  U4MODEbits.LPBACK = 0;
-
-  U4BRG = 0x67;
-
-  U4STAbits.UTXISEL1 = 0;
-  U4STAbits.UTXISEL0 = 1;
-  U4STAbits.URXISEL = 1;
-
-  IEC5bits.U4TXIE = 0;
-  IEC5bits.U4RXIE = 1;
-  U4MODEbits.UARTEN = 1;
-  U4STAbits.UTXEN = 1;
-  IPC22bits.U4RXIP = 6;
-  IPC22bits.U4TXIP = 6;
-
-  
-  _U4TXIF = 0; // Clear UART TX IF to prevent erroneous DMA operation
-  // Configure DMA channel
-  DMACH4 = 0;
-  DMACH4bits.SAMODE = 1; // Source Address incremented after operation
-  DMACH4bits.DAMODE = 0; // Destination Address unchanged after operation
-  DMACH4bits.TRMODE = 0; // One Shot Mode
-  DMACH5bits.SIZE = 1;   // Transfer size of 1 byte
-
-  DMAINT4 = 0;
-  DMAINT4bits.CHSEL = 59; // DMA Trigger is U4 TX Interrupt
-
-  DMADST4 = (uint16_t)&U1TXREG;
-
-  // Set up interrupts and interrupt priorities as desired
-  _DMA4IF = 0;
-  _DMA4IE = 0;
-  _DMA4IP = 3;
-
-  _U4RXIF = 0;
-  _U4RXIE = 1;
-  _U4RXIP = 3;
-
+void InitUart4(void){
+	
+	
+	U4MODEbits.STSEL=0;
+	U4MODEbits.PDSEL=0;
+	U4MODEbits.BRGH=0;
+	U4MODEbits.ABAUD=0;
+	U4MODEbits.LPBACK=0;
+	
+	U4BRG = 0x67;
+	
+	U4STAbits.UTXISEL1=0;
+	U4STAbits.UTXISEL0=1;
+	U4STAbits.URXISEL=1;
+	
+    IEC5bits.U4TXIE = 0;
+    IEC5bits.U4RXIE = 1;    
+	U4MODEbits.UARTEN=1;
+	U4STAbits.UTXEN=1;
+    IPC22bits.U4RXIP = 6;
+    IPC22bits.U4TXIP = 6;      
+    
 }
 void InitUart5(void){
 	
@@ -210,38 +153,12 @@ void InitUart6(void){
     IPC28bits.U6TXIP = 6;      
     
 }
-void UART1SEND(char data) {
-  if (g_CmdFrom_UartNum == 1) {
-    U1TXREG = data;
-    while (!IFS0bits.U1TXIF)
-      ;
-    IFS0bits.U1TXIF = 0;
-  } else {
-    U4TXREG = data;
-    while (!IFS5bits.U4TXIF)
-      ;
-    IFS5bits.U4TXIF = 0;
-  }
-}
-void UART1SendDma(unsigned char *txData, unsigned int len) {
-    for (unsigned int i = 0; i < len; i++) {
-      g_ucTX_DMA[i] = txData[i];
-    }
-  if (g_CmdFrom_UartNum == 1) {
-    while (DMACH5bits.CHEN);  
-    DMASRC5 = (uint16_t)g_ucTX_DMA;
-    DMACNT5 = len-1;
-    DMACH5bits.CHEN = 1; // Enable DMA Channel
-    DMACH5bits.CHREQ = 1; // Start DMA Operation
-  } else {    
-  	while (DMACH4bits.CHEN);  
-    DMASRC4 = (uint16_t)g_ucTX_DMA;
-    DMACNT4 = len-1;
-    DMACH4bits.CHEN = 1; // Enable DMA Channel
-    DMACH4bits.CHREQ = 1; // Start DMA Operation
-  }
+void UART1SEND(char data)
+{
+     U1TXREG = data;   
+      while(!IFS0bits.U1TXIF);
+     IFS0bits.U1TXIF=0;       		
 }
-
 void Uart1_Receive(char num){
 
     U1TXREG = num;  
@@ -309,50 +226,47 @@ void Uart6_Receive(char num){
 	   IFS7bits.U6RXIF=0;  
 }
 
-void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void) {
-  IFS0bits.U1RXIF = 0; 
-  g_ucU1RX_Buf[uart1_last++] = U1RXREG;
-  if(uart1_last == MAX_UART_BUFFER_SIZE){
-	uart1_last = 0;
-  }
+
+
+void __attribute__ ( ( interrupt, no_auto_psv ) ) _U1RXInterrupt( void ){
+    IFS0bits.U1RXIF = 0;       
+	g_ucU1RX_Data[g_uiUart1_No] = U1RXREG;                                   
+    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_ucU1RX_Data[g_uiUart1_No] = U1RXREG;
-//  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_CmdFrom_UartNum = 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;
-//    }
-//  }
 }
   
 void __attribute__ ( ( interrupt, no_auto_psv ) ) _U2RXInterrupt( void ){
@@ -434,53 +348,45 @@ void __attribute__ ( ( interrupt, no_auto_psv ) ) _U3RXInterrupt( void ){
     }
 }
 
-void __attribute__((interrupt, no_auto_psv)) _U4RXInterrupt(void) {
-  IFS5bits.U4RXIF = 0;
-
-  g_ucU4RX_Data[uart4_last++] = U4RXREG;
-  if(uart4_last == MAX_UART_BUFFER_SIZE){
-	uart4_last = 0;
-  }
-
-
-//
-//  g_ucU1RX_Data[g_uiUart1_No] = U4RXREG;
-//  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_CmdFrom_UartNum = 4;
-//        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;
-//    }
-//  }
+void __attribute__ ( ( interrupt, no_auto_psv ) ) _U4RXInterrupt( void ){
+    IFS5bits.U4RXIF = 0;       
+	g_ucU4RX_Data[g_uiUart4_No] = U4RXREG;                                
+    if(g_BUSY4 == 1) return;
+    if(g_ucHeaderFlag4 == 0){                                            
+		if(g_ucU4RX_Data[g_uiUart4_No] == FRAME_HEAD){                 
+            g_ucHeaderFlag4 = 1;                                         
+            g_ucU4RX_Data[0] = FRAME_HEAD;                                
+            g_uiUart4_No = 1;                                             
+		}else{
+            g_BUSY4 = 0;                                                  
+        }
+	}else if(g_ucHeaderFlag4 == 1){                                  
+		g_uiUart4_No++;
+    } 
+    if(g_uiUart4_No > (FRAME_LTHH_INDEX+1)){                                                      
+        g_uiLth4 = g_ucU4RX_Data[FRAME_LTHH_INDEX]; 
+        if(g_uiUart4_No == g_uiLth4){                                    
+            g_ulRSUM4 = Check(g_ucU4RX_Data,g_uiLth4-1);                
+            g_ucCRC4 = (unsigned char)g_ulRSUM4;                           
+            if(g_ucCRC4 == g_ucU4RX_Data[g_uiLth4-1]){                   
+                g_ucCMD4 = g_ucU4RX_Data[FRAME_CMD_INDEX];                
+                g_ucUART4_flag  = 1;                               
+                g_ulRSUM4       = 0;                                    
+                g_uiUart4_No    = 0;                                 
+                g_ucHeaderFlag4 = 0;                                   
+                g_BUSY4         = 1;                                    
+            }else{
+                memset(g_ucU4RX_Data,0,g_uiLth4*sizeof(unsigned char));     
+                g_BUSY4 = 0;                                                  
+            }        
+        }else if(g_uiUart4_No > g_uiLth4){                               
+            g_uiUart4_No    = 0;                                         
+            g_ucHeaderFlag4 = 0;                                         
+            g_BUSY4         = 0;                                            
+        }
+    }
+           
+	
 }
 
 void __attribute__ ( ( interrupt, no_auto_psv ) ) _U5RXInterrupt( void ){//√
@@ -564,279 +470,6 @@ void __attribute__ ( ( interrupt, no_auto_psv ) ) _U6RXInterrupt( void ){
            
 	
 }
-
-
-/********************************************************************
- *                         int Decode(const char *pInBuffer, int uLen)
- *
- *描述:对串口数据进行解码成结构体
- *参数:pInBuffer    接收缓冲区
-        *uheader 当前头位置
-        ulast 当前头尾位置
-        maxlen 缓冲区长度
-        pMessage  命令结构体
-        pdata 命令数据
- *返回:1解码成功,0解码失败
- *其他:无
- *--------------------------------------------------------------------
- *记录:
- ********************************************************************/
-int DecodeNew(void* pMessage, uint8_t *pdata, const uint8_t *pInBuffer, uint32_t *pheader,uint32_t  ulast,uint32_t maxlen)
-{
-	uint32_t  bufRealLen;
-	uint32_t  sizeofMessage = ALPS_MASSAGE_MIN_SIZE;
-	uint32_t  header = *pheader;
-	uint32_t i = 0;
-//    if (NULL == pInBuffer || NULL == pMessage || NULL == pdata || NULL == pheader)
-    if (NULL == pInBuffer  || NULL == pdata || NULL == pheader)
-    {
-		/*空指针判断*/
-		return 0;
-    }
-	/*缓冲区有效数据长度,缓冲区循环处理,会出现头大于未情况*/
-	bufRealLen = (ulast > header)?(ulast - header):(ulast + maxlen - header);
-	if(bufRealLen < sizeofMessage){
-		/*长度过段,跳过*/
-		return 0;
-	}
-//	bufRealLen = sizeofMessage; /*最大有效数据长度*/
-	for(; i<=(bufRealLen - sizeofMessage);){
-		uint32_t headerflag = pInBuffer[(header + i)%maxlen];
-//		headerflag += pInBuffer[(header + i + 1)%maxlen] <<8;
-		if(headerflag != ALPS_HEADER_FALG){
-			i += 1;
-//			header = (header + 1)%maxlen;
-			continue;
-		}
-		uint32_t messagelen =  pInBuffer[(header + i + 3)%maxlen];
-//		messagelen += pInBuffer[(header + i + 5)%maxlen] <<8;
-		if(messagelen > (maxlen)){
-			/*长度超长 跳过2个字节*/
-			i += 1;
-//			header = (header + 1)%maxlen;
-			continue;
-		}
-		if(messagelen >bufRealLen){
-			/*当前起始点可能存在数据,跳出循环,*/
-			i++; /*for采样小于等于判断,循环次数多1,此处加1便于后续处理*/
-			break;
-		}
-
-		uint8_t checkesum = 0;
-		uint8_t recsum = 0;
-		if((header + i +  messagelen) < maxlen){
-			checkesum = checkSum(pInBuffer + header + i , messagelen - 1);
-			
-		}else{
-			checkesum = checkSum(pInBuffer + header + i , (maxlen - (header)));
-			checkesum += checkSum(pInBuffer, (header + i + messagelen - 1)%maxlen);
-		}
-		recsum = *(pInBuffer + (header + i  + messagelen - 1)%maxlen ) ;
-//		recsum += *(pInBuffer + (header + i + 7 + messagelen)%maxlen) << 8;
-		/*固定结尾预留做调试用*/
-		if(checkesum != recsum ){
-			i += 1;
-//			header = (header + 1)%maxlen;
-		}else{
-			/*解析成功,拷贝消息结构体*/
-//		    uint8_t * pCharMessage = (uint8_t *)pMessage;
-//			for(unsigned copyi=0;copyi<(sizeofMessage-2);copyi++){
-//				 *pCharMessage++ = pInBuffer[(header + i+ copyi)%maxlen];
-//			}
-//			(*pMessage).tail = MINI7_TAIL_FALG;
-
-			/*解析成功,拷贝数据结构体*/
-			for(unsigned copyi=0;copyi<messagelen;copyi++){
-				 *pdata++ = pInBuffer[(header + i + copyi)%maxlen];
-			}
-			*pheader = (header + messagelen  + i )%maxlen;
-			return 1;
-		}
-	}
-   *pheader = (header + i - 1)%maxlen;
-   return 0;
-}
-
-
-
-/*******************************************************************************
- * 函数名称: unPack_Cmd  串口消息解码
- *******************************************************************************/
-
-void unPack_Cmd(void){
-    if(((uart1_last + MAX_UART_BUFFER_SIZE - uart1_header) % MAX_UART_BUFFER_SIZE ) >= ALPS_MASSAGE_MIN_SIZE)
-        {
-		    uart1_recOK = DecodeNew(NULL,g_ucU1RX_Data,g_ucU1RX_Buf, &uart1_header,uart1_last,MAX_UART_BUFFER_SIZE);
-			if(uart1_recOK){
-				if(g_BUSY1){
-					/*忙应答*/
-				}else{
-					g_BUSY1 = 1;
-					g_ucUART1_flag = 1;
-					g_CmdFrom_UartNum = 1;
-				}
-			}
-        }
-	else if(((uart4_last + MAX_UART_BUFFER_SIZE - uart4_header) % MAX_UART_BUFFER_SIZE ) >= ALPS_MASSAGE_MIN_SIZE)
-        {
-		    uart1_recOK = DecodeNew(NULL,g_ucU1RX_Data,g_ucU4RX_Buf, &uart4_header,uart4_last,MAX_UART_BUFFER_SIZE);
-			if(uart1_recOK){
-				if(g_BUSY1){
-					/*忙应答*/
-				}else{
-					g_BUSY1 = 1;
-					g_ucUART1_flag = 1;
-					g_CmdFrom_UartNum = 1;
-				}
-			}
-        }
-}
-
-
-/*******************************************************************************
- * 函数名称:Uart1_Ack
- *******************************************************************************/
-
-void Uart1_Ack_new(void) {
-  unsigned int g_uiFrmLth;
-  unsigned int sendTime;
-  unsigned int outTime = OUTTIME2S;
-  switch (g_ucCMD1) {
-  case READ_EEPROM:
-  case WRITE_EEPROM: {
-    if (g_ucU1RX_Data[2] == 0) {
-      if ((ulEE_address >= 0x0000) && (ulEE_address <= 0x1FFF)) {
-        g_ucU1RX_Data[2] = 1;
-        g_ucU1RX_Data[g_ucU1RX_Data[3] - 1] += 1;
-      } else if ((ulEE_address >= 0x2000) && (ulEE_address <= 0xFFFF)) {
-        g_ucU1RX_Data[2] = 2;
-        g_ucU1RX_Data[g_ucU1RX_Data[3] - 1] += 2;
-      }
-    }
-  } break;
-  case PCR_RDTEMP:
-  case RD_PCRDATA:
-  case PCR_MOTOR:
-    outTime = OUTTIME60S;
-    break;
-  default:
-    break;
-  }
-
-  switch (g_ucU1RX_Data[2]) {
-  case 0: {
-    g_uiFrmLth = 6;
-    g_ucU1TX_Data[0] = FRAME_HEAD;
-    g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
-    g_ucU1TX_Data[2] = 0;
-    g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
-    g_ucU1TX_Data[4] = 0;
-    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
-//    for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
-//      UART1SEND(g_ucU1TX_Data[n]);
-//    }
-	UART1SendDma(g_ucU1TX_Data,g_uiFrmLth);
-
-  } break;
-  case 1: {
-    for (unsigned int n = 0; n < g_ucU1RX_Data[3]; n++) {
-      UART2SEND(g_ucU1RX_Data[n]);
-    }
-    sendTime = ms10_conter;
-    while (!g_ucUART2_flag && (ms10_conter - sendTime) < outTime)
-      ;
-    if (!g_ucUART2_flag) {
-      g_uiFrmLth = 6;
-      g_ucU1TX_Data[0] = FRAME_HEAD;
-      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
-      g_ucU1TX_Data[2] = 1;
-      g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
-      g_ucU1TX_Data[4] = EnmErrCode_errTimeOut;
-      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
-      for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
-        UART1SEND(g_ucU1TX_Data[n]);
-      }
-    } else {
-      g_ucU2RX_Data[0] = FRAME_HEAD;
-      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
-      g_ucU2RX_Data[2] = 1;
-      g_uiFrmLth = g_ucU2RX_Data[3];
-      g_ucU2RX_Data[g_uiFrmLth - 1] =
-          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
-      for (unsigned int n = 0; n < g_ucU2RX_Data[3]; n++) {
-        UART1SEND(g_ucU2RX_Data[n]);
-      }
-    }
-    g_ucUART2_flag = 0;
-    g_BUSY2 = 0;
-
-  } break;
-  case 2: {
-    g_ucU3TX_Data[0] = FRAME_HEAD1;
-    g_ucU3TX_Data[1] = g_ucCMD1;
-    g_ucU3TX_Data[2] = 2;
-    g_ucU3TX_Data[3] = 0;
-    g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1; // 6
-    g_uiFrmLth = g_ucU3TX_Data[4];
-    for (unsigned int i = 4; i < g_ucU1RX_Data[3]; i++) {
-      g_ucU3TX_Data[i + 1] = g_ucU1RX_Data[i];
-    }
-    g_ucU3TX_Data[g_uiFrmLth - 1] =
-        (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
-    for (unsigned int n = 0; n < g_ucU3TX_Data[4]; n++) {
-      UART3SEND(g_ucU3TX_Data[n]);
-    }
-    sendTime = ms10_conter;
-    while (!g_ucUART2_flag && (ms10_conter - sendTime) < outTime)
-      ;
-    if (!g_ucUART2_flag) {
-      g_uiFrmLth = 6;
-      g_ucU1TX_Data[0] = FRAME_HEAD;
-      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
-      g_ucU1TX_Data[2] = 1;
-      g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
-      g_ucU1TX_Data[4] = EnmErrCode_errTimeOut;
-    } else {
-      g_ucU1TX_Data[0] = FRAME_HEAD;
-      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
-      g_ucU1TX_Data[2] = 2;
-      g_ucU1TX_Data[3] = g_ucU3RX_Data[4] - 1;
-      g_uiFrmLth = g_ucU1TX_Data[3];
-      for (unsigned int i = 4; i < g_ucU3RX_Data[4]; i++) {
-        g_ucU1TX_Data[i] = g_ucU4RX_Data[i + 1];
-      }
-    }
-
-    g_ucU1TX_Data[g_uiFrmLth - 1] =
-        (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
-    for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
-      UART1SEND(g_ucU1TX_Data[n]);
-    }
-    g_ucUART3_flag = 0;
-    g_BUSY3 = 0;
-
-  } break;
-  default: {
-    g_uiFrmLth = 6;
-    g_ucU1TX_Data[0] = FRAME_HEAD;
-    g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
-    g_ucU1TX_Data[2] = 0;
-    g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
-    g_ucU1TX_Data[4] = EnmErrCode_errPara1;
-    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
-    for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
-      UART1SEND(g_ucU1TX_Data[n]);
-    }
-
-  } break;
-  }
-  g_ucUART1_flag = 0;
-  g_uiUart1_No = 0;
-  g_ucHeaderFlag1 = 0;
-  memset(g_ucU1RX_Data, 0, g_uiLth1 * sizeof(unsigned char));
-  g_BUSY1 = 0;
-  g_CmdFrom_UartNum = 0;
-}
 /*******************************************************************************
  * 函数名称:Uart1_Ack
  *******************************************************************************/

+ 2 - 54
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/main.c

@@ -144,55 +144,11 @@
 #include <xc.h>
 #include <p24FJ512GU410.h>
 
-#define  STU PORTGbits.RG9 
 
 #include"User.h"
 /*******************************************************************************
  * 函数名称:InitOsc
  *******************************************************************************/
-
-// 假设系统时钟为40MHz(经PLL4X后)
-#define FCY 20000000UL  // 指令周期频率 = Fosc/2
-#define TIMER1_PRESCALER 256 
-#define TIMER1_PERIOD (FCY * 0.01 / TIMER1_PRESCALER - 1)
-unsigned int secondFlag;
-unsigned int ms10_conter=0;
-
-void dmaInit(void) {
-	DMACONbits.DMAEN = 1;//Enable DMA
-	DMACONbits.PRSSEL = 0;//Used Fixed Priority Scheme
-	DMAL = 0x0000;//Set the DMA range. Allow operation on all memory
-	DMAH = 0xFFFF;
-}
-
-
-void Timer1_Init(void) {
-    T1CONbits.TON = 0;      // 先关闭定时器
-    T1CONbits.TCKPS = 0b11; // 预分频比1:256 (11)
-    T1CONbits.TCS = 0;      // 使用内部时钟源 
-    PR1 = TIMER1_PERIOD;    // 10ms周期计算值(15624)
-    
-    IFS0bits.T1IF = 0;      // 清除中断标志 
-    IEC0bits.T1IE = 1;      // 使能定时器中断 
-    IPC0bits.T1IP = 4;      // 中断优先级4 
-    T1CONbits.TON = 1;      // 启动定时器 
-}
-
-void __attribute__((interrupt, auto_psv)) _T1Interrupt(void) {
-    IFS0bits.T1IF = 0;      // 必须手动清除标志位
-    
-    // 用户代码区(10ms任务)
-    static uint16_t counter = 0;
-	ms10_conter++;
-	unPack_Cmd();
-    if(++counter >= 100) {  // 1秒计时 
-        counter = 0;
-		secondFlag = 1;
-        // 添加秒级任务 
-    }
-}
-
-
 int main(void){
 //    InitOsc();
 	unsigned char data;
@@ -200,26 +156,18 @@ int main(void){
     LATBbits.LATB9 = 0;
     Delay_ms(3000);
     LATBbits.LATB9 = 1;
-	dmaInit();
 	InitUart1();//√
     InitUart2();//√
     InitUart3();//√
     InitUart4();//√
     InitUart5();//√
     InitUart6();//√	
-    Timer1_Init();
 	data=1;
  	while(1){
-		if(secondFlag){
-			secondFlag = 0;
-			 STU = !STU;     
-//			UART1SendDma("dma send test\n\r",sizeof("dma send test\n\r"));
-			 
-		}
 
 		if(g_ucUART1_flag == 1){  
-//            Uart1_Ack();      
-			Uart1_Ack_new();
+            Uart1_Ack();      
+
 					
 				}
 				

+ 5 - 1
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/nbproject/private/private.xml

@@ -5,6 +5,10 @@
         <group name="source">
             <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c</file>
         </group>
-        <group/>
+        <group>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/main.c</file>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c</file>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Uart.c</file>
+        </group>
     </open-files>
 </project-private>