Просмотр исходного кода

单项,处理modbus状态与串口中断冲突导致程序死机。

liyi 1 год назад
Родитель
Сommit
49052f2772

+ 9 - 7
truing_control/PDU-AC_ADA_NEW_6/modbus/BARE/port/portserial.c

@@ -129,9 +129,9 @@ xMBPortSerialGetByte( CHAR * pucByte )
 void USART0_IRQHandler(void)            
 {
   if(usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE) != RESET)  //接收缓冲区非空中断
-  {         
-		prvvUARTRxISR();		
-    usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);  //清除USART1中断挂起                                                                                     
+  {   
+		usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);  //清除USART1中断挂起   
+		prvvUARTRxISR();		                                                                                   
   }                                                         
                                                             
   if(usart_flag_get(USART0, USART_FLAG_ORERR) == SET) //溢出错误标志为1
@@ -140,14 +140,16 @@ void USART0_IRQHandler(void)
      prvvUARTRxISR();
   }                                                                                                           
 	if(usart_interrupt_flag_get(USART0, USART_INT_FLAG_TBE)!= RESET)  //发送缓冲区空中断
-  {     
+  { 
+		usart_interrupt_flag_clear(USART0, USART_INT_FLAG_TBE);        //清除发送中断标志		
 		prvvUARTTxReadyISR();		
-    usart_interrupt_flag_clear(USART0, USART_INT_FLAG_TBE);        //清除发送中断标志
+    
   }
 	if(usart_interrupt_flag_get(USART0, USART_INT_FLAG_TC)!= RESET)  //发送完成中断
-  {     	
-    prvvUARTTxReadyISR();
+  {   
 		usart_interrupt_flag_clear(USART0, USART_INT_FLAG_TC);         //清除发送完成中断   
+    prvvUARTTxReadyISR();
+		
 //		gpio_bit_reset(GPIOA, GPIO_PIN_8);														 //接收		
   }
 } 

+ 3 - 1
truing_control/PDU-AC_ADA_NEW_6/modbus/rtu/mbrtu.c

@@ -317,11 +317,13 @@ xMBRTUTransmitFSM( void )
         }
         else
         {
+						
             xNeedPoll = xMBPortEventPost( EV_FRAME_SENT );
             /* Disable transmitter. This prevents another transmit buffer
              * empty interrupt. */
+						eSndState = STATE_TX_IDLE;
             vMBPortSerialEnable( TRUE, FALSE );
-            eSndState = STATE_TX_IDLE;
+            //eSndState = STATE_TX_IDLE;
         }
         break;
     }

Разница между файлами не показана из-за своего большого размера
+ 12961 - 2649
truing_control/PDU-AC_ADA_NEW_6/prj/JLinkLog.txt


Разница между файлами не показана из-за своего большого размера
+ 327 - 480
truing_control/PDU-AC_ADA_NEW_6/prj/ctrl_board.uvguix.Gowon


+ 16 - 8
truing_control/PDU-AC_ADA_NEW_6/prj/ctrl_board.uvoptx

@@ -88,7 +88,7 @@
         <sRmem>1</sRmem>
         <sRfunc>1</sRfunc>
         <sRbox>1</sRbox>
-        <tLdApp>1</tLdApp>
+        <tLdApp>0</tLdApp>
         <tGomain>1</tGomain>
         <tRbreak>1</tRbreak>
         <tRwatch>1</tRwatch>
@@ -113,15 +113,10 @@
         <tDllPa></tDllPa>
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
-        <tIfile></tIfile>
+        <tIfile>.\LoadSymbol.ini</tIfile>
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name>嗪??</Name>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGTARM</Key>
@@ -135,7 +130,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U69545260 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BF11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000000 -FC1000 -FN1 -FF0GD32E23x.FLM -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
+          <Name>-U69545260 -O70 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BF11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000000 -FC1000 -FN1 -FF0GD32E23x.FLM -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -200,7 +195,20 @@
           <WinNumber>1</WinNumber>
           <ItemText>elec</ItemText>
         </Ww>
+        <Ww>
+          <count>11</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>ac_board</ItemText>
+        </Ww>
       </WatchWindow1>
+      <MemoryWindow1>
+        <Mm>
+          <WinNumber>1</WinNumber>
+          <SubType>0</SubType>
+          <ItemText>0x20001BC8</ItemText>
+          <AccSizeX>0</AccSizeX>
+        </Mm>
+      </MemoryWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>

+ 3 - 3
truing_control/PDU-AC_ADA_NEW_6/prj/ctrl_board.uvprojx

@@ -49,7 +49,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>ctrl_board_new_5</OutputName>
+          <OutputName>ctrl_board_new_3</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -132,7 +132,7 @@
             <UseTargetDll>1</UseTargetDll>
             <UseExternalTool>0</UseExternalTool>
             <RunIndependent>0</RunIndependent>
-            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
             <Capability>1</Capability>
             <DriverSelection>4102</DriverSelection>
           </Flash1>
@@ -313,7 +313,7 @@
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>7</Optim>
+            <Optim>0</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>1</OneElfS>

+ 2 - 2
truing_control/PDU-AC_ADA_NEW_6/user/board_cfg.h

@@ -55,8 +55,8 @@
 #define   PRJ_3_4                   0
 #define   PRJ_3_2                   0
 #define 	PRJ_DC_8									0
-#define   PRJ_6_NEW                 1
-#define   PRJ_3_NEW                 0
+#define   PRJ_6_NEW                 0
+#define   PRJ_3_NEW                 1
 #define 	PRJ_5_NEW									0
 #define 	PRJ_4_SELF_LOCK       	  0
 #define   PRJ_4_BASE                0