Parcourir la source

解决3相读耗电量,在频繁modbus访问的时候导致爆栈,出现异常死机问题。

liyi il y a 1 an
Parent
commit
67fb54653e

+ 0 - 35
truing_control/PDU-Triphasic_IO/USER/gd32e23x_it.c

@@ -33,9 +33,6 @@ OF SUCH DAMAGE.
 */
 
 #include "gd32e23x_it.h"
-#include "main.h"
-#include "systick.h"
-#include "cfg.h"
 
 /*!
     \brief      this function handles NMI exception
@@ -44,38 +41,9 @@ OF SUCH DAMAGE.
     \retval     none
 */
 
-
-enum {
-	ERROR_NONE = 0,
-	ERROR_NMI,
-	ERROR_HardFault,
-	ERROR_MemManage,
-	ERROR_BusFault,
-	ERROR_UsageFault,
-	ERROR_SVC,
-	ERROR_DebugMon,
-	ERROR_PendSV,
-};
-
-extern META_DATA_S meta_data;
-extern uint32_t normal_running_time;
-extern void flash_erase_meta();
-extern void flash_write_meta(const META_DATA_S *meta_data);
-inline static void set_error(uint8_t error)
-{
-	meta_data.errno = error;
-	meta_data.error_count ++;
-	meta_data.recent_running_time = normal_running_time;
-	flash_erase_meta();
-	flash_write_meta(&meta_data);
-	NVIC_SystemReset();
-}
-
 void NMI_Handler(void)
 {
     /* if NMI exception occurs, go to infinite loop */
-		set_error(ERROR_NMI);
-		
     while(1) {
     }
 }
@@ -89,7 +57,6 @@ void NMI_Handler(void)
 void HardFault_Handler(void)
 {
     /* if Hard Fault exception occurs, go to infinite loop */
-		set_error(ERROR_HardFault);
     while(1) {
     }
 }
@@ -103,7 +70,6 @@ void HardFault_Handler(void)
 void SVC_Handler(void)
 {
     /* if SVC exception occurs, go to infinite loop */
-		set_error(ERROR_SVC);
     while(1) {
     }
 }
@@ -117,7 +83,6 @@ void SVC_Handler(void)
 void PendSV_Handler(void)
 {
     /* if PendSV exception occurs, go to infinite loop */
-		set_error(ERROR_PendSV);
     while(1) {
     }
 }

+ 7 - 2
truing_control/PDU-Triphasic_IO/USER/main.c

@@ -808,8 +808,12 @@ static void read_ele(void)
 	
 	
 #else
-			for(int j = 0 ; j < Hlw8110_CS;j++)
-				read_Hlw8110(j,0);
+	static uint8_t channel = 0;
+	read_Hlw8110(channel,0);
+	channel ++;
+	if(channel == Output_ChN_default)
+	{
+			channel = 0;
 			AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] = AC3PPDU_Output[CH1_out].AC_V;
 			AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] = AC3PPDU_Output[CH2_out].AC_V;
 			AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] = AC3PPDU_Output[CH3_out].AC_V;
@@ -829,6 +833,7 @@ static void read_ele(void)
 			{
 				Fault_state_process(i);
 			}		
+		}
 #endif
 }