Quellcode durchsuchen

屏蔽升级功能,处理modbus状态机与串口中断产生冲突,导致程序死机的问题

liyi vor 1 Jahr
Ursprung
Commit
9b7fc50a99

+ 3 - 0
control/PDU-DC_UPGRADE/App/ADC/ADC.h

@@ -44,6 +44,9 @@
 #define ADC_0_5_IO GPIOA
 #define ADC_67_IO GPIOB
 
+
+#define ADC_VOL 8
+
 #define ADC_ch0 GPIO_PIN_0
 #define ADC_ch1 GPIO_PIN_1
 #define ADC_ch2 GPIO_PIN_4

+ 44 - 29
control/PDU-DC_UPGRADE/App/Main/Main.c

@@ -119,7 +119,7 @@ uint8_t RL_Now_state[RELAY_ChN_default] = {0};
 uint16_t Devid_IDChalNum = 0;//设备类型和通道数
 
 
-#define ADC_VOL 8
+
 
 
 #if SUPPORT_2_V_GA_CHN
@@ -190,26 +190,26 @@ static void key_io_control();
 void LimiT_enable_check(uint8_t ch_x,uint32_t Lt_v);
 
 uint32_t FfLASH = 0;
-static void app_init(META_DATA_S *meta)
-{
-	flash_get_meta_data(meta);
-	FfLASH = NVIC_VECTTAB_FLASH;
-	nvic_vector_table_set(NVIC_VECTTAB_FLASH,0X08004000 - NVIC_VECTTAB_FLASH);
-	__enable_irq();
-}
-
-
-void break_2_boot_upgreade(void)
-{
-	meta_data.errno = 0;
-	meta_data.operation_flag = 1;
-	meta_data.recent_running_time = normal_running_time;
-	flash_erase_meta();
-	flash_write_meta(&meta_data);
-	__disable_irq();
-	//__set_FAULTMASK(1);
-	NVIC_SystemReset();
-}
+//static void app_init(META_DATA_S *meta)
+//{
+//	flash_get_meta_data(meta);
+//	FfLASH = NVIC_VECTTAB_FLASH;
+//	nvic_vector_table_set(NVIC_VECTTAB_FLASH,0X08004000 - NVIC_VECTTAB_FLASH);
+//	__enable_irq();
+//}
+
+
+//void break_2_boot_upgreade(void)
+//{
+//	meta_data.errno = 0;
+//	meta_data.operation_flag = 1;
+//	meta_data.recent_running_time = normal_running_time;
+//	flash_erase_meta();
+//	flash_write_meta(&meta_data);
+//	__disable_irq();
+//	//__set_FAULTMASK(1);
+//	NVIC_SystemReset();
+//}
 
 /*********************************************************************************************************
 *                                              内部函数实现
@@ -248,7 +248,9 @@ static  void  InitHardware(void)
 	InitLED();           //初始化LED模块
 	InitKey();           //初始化Key模块
 	InitRelay();				 //初始化Relay模块
+
 	InitAT24Cxx();			 //初始化24C64模块	
+
 	Init_74hc573();				 //初始化74hc573锁存器
 	Init_74hc595();       //初始化74hc595
 	InitTimer();         //初始化Timer模块
@@ -266,8 +268,9 @@ static  void  InitHardware(void)
 #endif
 
 	
-	
+#ifndef NO_GAGE
 	Init_ADC();
+#endif
 #if SUPPORT_DETECTION
 	detection_Init();
 #endif
@@ -746,7 +749,7 @@ void switch_recode()
 *********************************************************************************************************/
 int main(void)
 {
-	app_init(&meta_data);
+	//app_init(&meta_data);
 	uint8_t i = 0;
 	uint32_t temp0 = 0;
 	uint32_t temp_v = 0;
@@ -787,16 +790,18 @@ int main(void)
 	infomation.channels = DCPDU_active_chn;
 	
 	flash_get_infomation(&infomation);
+
 	ReadEeprom();
+
 	for(i = 0;i < RELAY_ChN_default;i++)
 	{
 		DCPDU_RL_time.RL_ontime[i] = DCPDU_Modbus_Reg[Mb_Dbuff_RL_Ton1_Addr + i];
 		DCPDU_RL_time.RL_offtime[i] = DCPDU_Modbus_Reg[Mb_Dbuff_RL_Toff1_Addr + i];
 	}
 	gpio_bit_reset(LOCK_74hc573_IO, LOCK_74hc573_OE);
-	
+#ifndef NO_GAGE
 	Init_Dev_parameter();
-	
+#endif
 	RL_Rx_state = Eeprom_Rbuf[ERom_RL_ST_Addr]& Active_state_bit;
 	//RL_Allon_flag = true;
 	
@@ -807,11 +812,13 @@ int main(void)
 	Fault_state_V = Fault_state_V & Active_state_bit;
 	Fault_display(Fault_state_V);
 	Fault_state_Last = Fault_state_V;
+#ifndef NO_GAGE
 	for(i = 0;i < DCPDU_active_chn;i++)
 	{
 		temp0 = 4*i;
 		TotalWh[i] = DCPDU_Modbus_Reg[temp0 + Mb_Dbuff_P1Output_Addr + 3];//耗电量初始化
 	}
+#endif
 	for(i = 0;i < RELAY_ChN_default;i++)
 	{
 		LimiT_enable_check(i,DCPDU_Modbus_Reg[Mb_Dbuff_CH1ST_FT_Addr+i]);
@@ -997,7 +1004,7 @@ static  uint8_t write_iic_flash = 0;
 		}
 #endif
 
-
+#ifndef NO_GAGE
 		if(read_adc_flag == 1)
 		{
 			read_adc_val();
@@ -1006,7 +1013,7 @@ static  uint8_t write_iic_flash = 0;
 		detection_value = get_detection();
 #endif
 		}
-
+#endif
 		if(Get1SecFlag()) //判断1s标志状态
 		{
 			write_iic_flash++;
@@ -1015,10 +1022,12 @@ static  uint8_t write_iic_flash = 0;
 			Clr1SecFlag();  //清除1s标志
 			//read_adc_val();//定时读取ADC的数据
 			//输出耗电量计算。累计。
+#ifndef NO_GAGE
 			
 #if (SUPPORT_IM1253E == 0)
 				uint32_t kWh_in = 0;
 #endif
+
 			for(i = 0;i < DCPDU_active_chn;i++)
 			{
 				temp0 = 4*i;
@@ -1042,7 +1051,7 @@ static  uint8_t write_iic_flash = 0;
 				//将耗电量实时写入Eeprom
 
 			}
-			
+		
 		if(write_iic_flash == 90)
 		{
 			write_iic_flash = 0;
@@ -1065,7 +1074,9 @@ static  uint8_t write_iic_flash = 0;
 				fault_state_process(i);
 			}
 			fault_all_state_process();
+#endif
 		}
+#ifndef NO_GAGE
 		if(adc_data_ok_flag)//读到ADC数据,然后进行处理。
 		{
 			adc_data_ok_flag = false;
@@ -1159,7 +1170,8 @@ static  uint8_t write_iic_flash = 0;
 			DC_BASE[2] = DCPDU_Modbus_Reg[Mb_Dbuff_WInput_Addr];
 #endif
 		}
-		
+#endif
+#ifndef NO_GAGE
 		if(Fault_state_Reg > 0)//故障或超阈值处理
 		{
 			if(Fault_state_Reg != Fault_state_Last)
@@ -1173,11 +1185,14 @@ static  uint8_t write_iic_flash = 0;
 
 		}
 		RL_Over_Func();
+#endif
 		MODbus_CMD();//MODBUS命令池处理。
 #if SURPPOT_ALL_ON_ALL_OFF
 		key_io_control();
 #endif
+#ifndef NO_GAGE
 		switch_recode();
+#endif
 	}
 }
 

+ 9 - 4
control/PDU-DC_UPGRADE/App/Main/board_cnf.h

@@ -13,7 +13,8 @@
 #define                 PRJ_ADC_V_DC_NEW_8                        0
 #define                 PRJ_ADC_V_DC_NEW_7                        0
 #define                 PRJ_ADC_V_DC_NEW_6                        0
-#define                 PRJ_ADC_V_DC_NEW_4                        1
+#define                 PRJ_ADC_V_DC_NEW_4                        0
+#define 								PRJ_ADC_V_DC_1                            1
 #if   PRJ_BASE_DC_8
 	#define RELAY_ChN_default             		8
 	#define SUPPORT_IM1253E										1
@@ -37,9 +38,9 @@
 	#define SUPPORT_STM32_ADC                 1
 	#define SPPPORT_BIG_HAL                1
 #elif    PRJ_ADC_V_DC_NEW_8
-	#define RELAY_ChN_default             		8
+	#define RELAY_ChN_default             		1
 	#define SURPPOT_ALL_ON_ALL_OFF          	1
-	#define SUPPORT_DETECTION               	1
+	#define SUPPORT_DETECTION               	0
 	#define SUPPORT_STM32_ADC                 1
 #elif    PRJ_ADC_V_DC_NEW_7
 	#define RELAY_ChN_default             		7
@@ -61,7 +62,11 @@
 	#define SUPPORT_SWITCH_REMENBER           1
 	#define SUPPORT_4_GATE_ADC                1
 	#define SPPPORT_BIG_HAL										1
-#elif
+#elif PRJ_ADC_V_DC_1
+	#define RELAY_ChN_default             		1
+	#define SURPPOT_ALL_ON_ALL_OFF          	1
+	//#define SUPPORT_DETECTION               	1
+	#define SUPPORT_STM32_ADC                 1
 #endif
 
 

+ 1 - 1
control/PDU-DC_UPGRADE/App/Modbus/BARE/port/port.c

@@ -214,7 +214,7 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 					}
 				}else if(usAddress == DCPDU_BREAK_UPGRADE)
 				{
-					break_2_boot_upgreade();
+						//break_2_boot_upgreade();
 				}
 				else//´íÎó
 				{

+ 2 - 1
control/PDU-DC_UPGRADE/App/Modbus/rtu/mbrtu.c

@@ -320,8 +320,9 @@ xMBRTUTransmitFSM( void )
             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;
     }

+ 3 - 3
control/PDU-DC_UPGRADE/App/uart_IM1253E/IM1253E.c

@@ -159,13 +159,13 @@ Rx_Data data={0};
 
 uint32_t read_voltage(uint8_t channel)
 {
-	uint16_t read_volatge = 0xA5A5;
+	uint16_t r_volatge = 0xA5A5;
 	uint32_t value;
 	RX_Length = 4;
 	che442_change_ch(channel);
 	DelayNms(5);
 	//memset(&data.value,0,4);
-	Start_Send_UartData((uint8_t*)&read_volatge,sizeof(read_volatge));
+	Start_Send_UartData((uint8_t*)&r_volatge,sizeof(r_volatge));
 	int count = 0;
 	while(Rx_Finish_flag != true)
 	{
@@ -181,7 +181,7 @@ uint32_t read_voltage(uint8_t channel)
 	if(Rx_Finish_flag == false)
 	{
 		count =0;
-		Start_Send_UartData((uint8_t*)&read_volatge,sizeof(read_volatge));
+		Start_Send_UartData((uint8_t*)&r_volatge,sizeof(r_volatge));
 		while(Rx_Finish_flag != true)
 		{
 			DelayNms(1);

Datei-Diff unterdrückt, da er zu groß ist
+ 110 - 65
control/PDU-DC_UPGRADE/Project/GD32KeilPrj.uvguix.Gowon


+ 10 - 0
control/PDU-DC_UPGRADE/Project/GD32KeilPrj.uvoptx

@@ -190,6 +190,16 @@
           <WinNumber>1</WinNumber>
           <ItemText>meta_data</ItemText>
         </Ww>
+        <Ww>
+          <count>8</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>read_volatge</ItemText>
+        </Ww>
+        <Ww>
+          <count>9</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>data</ItemText>
+        </Ww>
       </WatchWindow1>
       <WatchWindow2>
         <Ww>

+ 6 - 6
control/PDU-DC_UPGRADE/Project/GD32KeilPrj.uvprojx

@@ -49,11 +49,11 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>GD32KeilPrj_DC_升级</OutputName>
+          <OutputName>GD32KeilPrj_DC_1_FANS</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
+          <DebugInformation>0</DebugInformation>
           <BrowseInformation>1</BrowseInformation>
           <ListingPath>.\Listings\</ListingPath>
           <HexFormatSelection>1</HexFormatSelection>
@@ -80,8 +80,8 @@
             <nStopB2X>0</nStopB2X>
           </BeforeMake>
           <AfterMake>
-            <RunUserProg1>1</RunUserProg1>
-            <RunUserProg2>1</RunUserProg2>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
             <UserProg1Name>D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L</UserProg1Name>
             <UserProg2Name>../tools/mb.exe  ../App/Main/cfg.h ../tools/bootloader.bin @L.bin</UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
@@ -275,8 +275,8 @@
               </OCR_RVCT3>
               <OCR_RVCT4>
                 <Type>1</Type>
-                <StartAddress>0x8004000</StartAddress>
-                <Size>0xc000</Size>
+                <StartAddress>0x8000000</StartAddress>
+                <Size>0x10000</Size>
               </OCR_RVCT4>
               <OCR_RVCT5>
                 <Type>1</Type>

Datei-Diff unterdrückt, da er zu groß ist
+ 7096 - 7227
control/PDU-DC_UPGRADE/Project/JLinkLog.txt