liyi пре 1 година
родитељ
комит
da811440ab

+ 1 - 1
control/STS/HARDWARE/Adc/Adc.c

@@ -18,7 +18,7 @@ void adc_init(void)
 	rcu_adc_clock_config(RCU_ADCCK_APB2_DIV6);
 	rcu_periph_clock_enable(RCU_GPIOB);
 	
-	gpio_mode_set(RCU_GPIOB, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_0); 
+	gpio_mode_set(GPIOB, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_0); 
 	
 	adc_deinit();
 	

+ 23 - 14
control/STS/HARDWARE/Electricity/Electricity.c

@@ -33,34 +33,43 @@ void electricity_init()
 	data->check_wanning = check_wanning;
 }
 
+
+extern float   F_AC_V;													// ¦Ì??1¨®DD¡ì?¦Ì
+extern float   F_AC_I;													// A¨ª¡§¦Ì¨¤¦Ì?¨¢¡Â
+extern float   F_AC_P;													// A¨ª¡§¦Ì¨¤¨®D1|1|?¨º
+extern float   F_AC_LINE_Freq;     							// ¨ºD¦Ì???D??¦Ì?¨º
+extern float   F_AC_E;													// A¨ª¡§¦Ì¨¤¨®D1|¦Ì??¨¹(¨¢?)
+extern float   F_AC_PF;													// 1|?¨º¨°¨°??¡ê?A¨ª¡§¦Ì¨¤o¨ªB¨ª¡§¦Ì¨¤???¨¹????¨°? 
+
 void electricity_read(uint8_t channel)
 {
 	electricity_t ele = {0};
 	select_channel(channel);
 	DelayNus(50);
 	Check_WriteReg_Success();
-	ele.voltage = read_hlw8110_v();
-	ele.current = read_hlw8110_i();
-	ele.consumer = read_hlw8110_e();
-	ele.power = read_hlw8110_p();
-	ele.freq = read_hlw8110_freq();
-	ele.factor = read_hlw8110_pf();
+	Calculate_HLW8110_MeterData();
+//	ele.voltage = read_hlw8110_v();
+//	ele.current = read_hlw8110_i();
+//	ele.consumer = read_hlw8110_e();
+//	ele.power = read_hlw8110_p();
+//	ele.freq = read_hlw8110_freq();
+//	ele.factor = read_hlw8110_pf();
 	
 	sts_data_t *data = get_sts();
 	if(channel == 0)
 	{
-		data->m_data.out_power.voltage = ele.voltage * 1000;
-		data->m_data.out_power.current = ele.current * 1000;
+		data->m_data.out_power.voltage = F_AC_V * 1000;
+		data->m_data.out_power.current = F_AC_I * 1000;
 		
-		data->m_data.out_power.power = ele.power * 1000;
-		data->m_data.out_power.freq = ele.freq * 1000;
-		data->m_data.out_power.factor = ele.factor * 1000;
-		data->iic_consumer += ele.consumer;
+		data->m_data.out_power.power = F_AC_P* 1000;
+		data->m_data.out_power.freq = F_AC_LINE_Freq * 1000;
+		data->m_data.out_power.factor = F_AC_PF * 1000;
+		data->iic_consumer += F_AC_E;
 		data->m_data.out_power.consumer = data->iic_consumer * 1000;
 	}else
 	{
-		data->m_data.out_power.voltage = ele.voltage * 1000;
-		data->m_data.out_power.freq = ele.freq * 1000;
+		data->m_data.input[channel-1].voltage = F_AC_V * 1000;
+		data->m_data.input[channel-1].freq = F_AC_LINE_Freq * 1000;
 	}
 }
 

+ 54 - 32
control/STS/HARDWARE/Exti/Exti.c

@@ -3,20 +3,20 @@
 #include "gd32e230x_conf.h"
 #include "main.h"
 
-#define INPUT_PIN_1   GPIO_PIN_7
-#define INPUT_PIN_2   GPIO_PIN_8
+#define INPUT_PIN_1   GPIO_PIN_0
+#define INPUT_PIN_2   GPIO_PIN_1
 
-#define SWTICH_PIN    GPIO_PIN_5
+#define SWTICH_PIN    GPIO_PIN_9
 
-#define EXIT_INPUT_PIN_1  EXTI_SOURCE_PIN7
-#define EXIT_INPUT_PIN_2 	EXTI_SOURCE_PIN8
+#define EXIT_INPUT_PIN_1  EXTI_SOURCE_PIN0
+#define EXIT_INPUT_PIN_2 	EXTI_SOURCE_PIN1
 
-#define SWITCH_INPUT_PIN  EXTI_SOURCE_PIN5
+#define SWITCH_INPUT_PIN  EXTI_SOURCE_PIN9
 
-#define INPUT_EXIT_1 			EXTI_7
-#define INPUT_EXIT_2      EXTI_8
+#define INPUT_EXIT_1 			EXTI_0
+#define INPUT_EXIT_2      EXTI_1
 
-#define SWITCH_EXTI       EXTI_5
+#define SWITCH_EXTI       EXTI_9
 
 
 static void read_input_level(uint8_t channel);
@@ -25,25 +25,26 @@ static void read_switch_level();
 
 void sts_exti_init(void)
 {
+	rcu_periph_clock_enable(RCU_GPIOA);
 	rcu_periph_clock_enable(RCU_GPIOB);
 	rcu_periph_clock_enable(RCU_CFGCMP);
 	//rcu_periph_clock_enable(RCU_AF);
 	
-	gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_1);
-	gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_2);
+	gpio_mode_set(GPIOA,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_1);
+	gpio_mode_set(GPIOA,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_2);
 	gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_NONE,SWTICH_PIN);
-	
+//	nvic_irq_enable(EXTI0_1_IRQn,0);
 	nvic_irq_enable(EXTI4_15_IRQn,0);
-	syscfg_exti_line_config(EXTI_SOURCE_GPIOB,EXIT_INPUT_PIN_1);
-	syscfg_exti_line_config(EXTI_SOURCE_GPIOB,EXIT_INPUT_PIN_2);
+//	syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXIT_INPUT_PIN_1);
+//	syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXIT_INPUT_PIN_2);
 	syscfg_exti_line_config(EXTI_SOURCE_GPIOB,SWITCH_INPUT_PIN);
-	
-	exti_init(INPUT_EXIT_1,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
-	exti_init(INPUT_EXIT_2,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
+//	
+//	exti_init(INPUT_EXIT_1,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
+//	exti_init(INPUT_EXIT_2,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
 	exti_init(SWITCH_EXTI,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
-	
-	exti_interrupt_flag_clear(INPUT_EXIT_1);
-	exti_interrupt_flag_clear(INPUT_EXIT_2);
+//	
+//	exti_interrupt_flag_clear(INPUT_EXIT_1);
+//	exti_interrupt_flag_clear(INPUT_EXIT_2);
 	exti_interrupt_flag_clear(SWITCH_EXTI);
 	
 	sts_data_t * data = get_sts();
@@ -55,11 +56,21 @@ void sts_exti_init(void)
 
 uint8_t get_exti_in_1(void)
 {
-	return gpio_input_bit_get(GPIOB,INPUT_PIN_1);
+
+	if(gpio_input_bit_get(GPIOA,INPUT_PIN_1))
+	{
+		return 1;
+	}else 
+		return 0;
+	
 }
 uint8_t get_exti_in_2(void)
 {
-	return gpio_input_bit_get(GPIOB,INPUT_PIN_2);
+	if(gpio_input_bit_get(GPIOA,INPUT_PIN_2))
+	{
+		return 1;
+	}else 
+		return 0;
 }
 
 
@@ -86,7 +97,11 @@ static void read_input_level(uint8_t channel)
 
 uint8_t get_exti_switch(void)
 {
-	return gpio_input_bit_get(GPIOB,SWTICH_PIN);
+	if(gpio_input_bit_get(GPIOB,SWTICH_PIN))
+	{
+		return 1;
+	}else 
+		return 0;
 }
 
 static void read_switch_level()
@@ -95,40 +110,47 @@ static void read_switch_level()
 	data->switch_status = get_exti_switch();
 }
 
-
-void EXTI4_15_IRQHandler(void)
+void EXTI0_1_IRQHandler(void)
 {
 	sts_data_t * data = get_sts();
 	if(RESET != exti_interrupt_flag_get(INPUT_EXIT_1))
 	{
+		exti_interrupt_flag_clear(INPUT_EXIT_1);
 		if(get_exti_in_1() == SET) 					//rising
-		{
-			data->m_data.input_status.input_status[INPUT_CHANNEL_1] = 1;
-		}else																//falling
 		{
 			data->m_data.input_status.input_status[INPUT_CHANNEL_1] = 0;
 			if(data->m_data.input_status.input_status[INPUT_CHANNEL_2])
 			{
 				data->choise_input(INPUT_CHANNEL_2);
 			}
+			
+		}else																//falling
+		{
+			data->m_data.input_status.input_status[INPUT_CHANNEL_1] = 1;
 		}
-		exti_interrupt_flag_clear(INPUT_EXIT_1);
+		
 	}
 	if(RESET != exti_interrupt_flag_get(INPUT_EXIT_2))
 	{
 		if(get_exti_in_2() == SET)				//rising
-		{
-			data->m_data.input_status.input_status[INPUT_CHANNEL_2] = 1;
-		}else																//falling
 		{
 			data->m_data.input_status.input_status[INPUT_CHANNEL_2] = 0;
 			if(data->m_data.input_status.input_status[INPUT_CHANNEL_1])
 			{
 				data->choise_input(INPUT_CHANNEL_1);
 			}
+		}else																//falling
+		{
+
+			data->m_data.input_status.input_status[INPUT_CHANNEL_2] = 1;
 		}
 		exti_interrupt_flag_clear(INPUT_EXIT_2);
 	}
+}
+void EXTI4_15_IRQHandler(void)
+{
+	sts_data_t * data = get_sts();
+
 	if(RESET != exti_interrupt_flag_get(SWITCH_EXTI))
 	{
 		if(get_exti_switch() == SET)     //rising

+ 4 - 1
control/STS/HARDWARE/Led/Led.c

@@ -11,6 +11,7 @@
 
 #include "Led.h"
 #include "gd32e230x_conf.h"
+#include "main.h"
 
 static void ConfigLEDGPIO(void);  
 
@@ -28,7 +29,9 @@ static void ConfigLEDGPIO(void)
 }
 void InitLED(void)
 {
-  ConfigLEDGPIO();  
+  ConfigLEDGPIO(); 
+	sts_data_t *data = get_sts();
+	data->led_flash = LEDFlicker2;
 }
 
 void LEDFlicker1(unsigned short cnt)

+ 10 - 5
control/STS/HARDWARE/Relay/Relay.c

@@ -12,6 +12,7 @@
 #include "Sn74lvc573.h"
 #include "R_Led.h"
 #include "main.h"
+#include "SysTick.h"
 
 #define RELAY_1  GPIO_PIN_3
 #define RELAY_2  GPIO_PIN_4
@@ -36,7 +37,8 @@ static void ConfigRelayGPIO(void)
 void InitRelay(void)
 {
 	Init74Lvc();
-  ConfigRelayGPIO();  
+  ConfigRelayGPIO(); 
+	r_led_init();	
 	sts_data_t *data = get_sts();
 	data->choise_input = choise_input;
 	data->open_output = out_open;
@@ -52,20 +54,23 @@ void choise_input(uint8_t channel)
 	{
 		case 0:
 		{
-			unlock();
+			
 			gpio_bit_reset(GPIOB, RELAY_1);
-			lock();
+			
 			data->m_data.md_choise.choise_ch = INPUT_CHANNEL_1;
 			in_r_led_on_off(channel);
+			unlock();
+			lock();
 		}
 		break;
 		case 1:
 		{
-			unlock();
+			
 			gpio_bit_set(GPIOB, RELAY_1);
-			lock();
 			data->m_data.md_choise.choise_ch = INPUT_CHANNEL_2;
 			in_r_led_on_off(channel);
+			unlock();
+			lock();
 		}
 		break;
 		default:

+ 2 - 0
control/STS/HARDWARE/Uart1/Uart1.c

@@ -178,10 +178,12 @@ void select_channel(uint8_t chx)
 			SEL0_H;
 			SEL1_L;
 			SEL2_L;
+		break;
 		case 2:
 			SEL0_L;
 			SEL1_H;
 			SEL2_L;
+		break;
 		default:
 			break;
 	}

+ 8 - 3
control/STS/MODBUS/BARE/port/port.c

@@ -184,14 +184,19 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 							{
 								uint16_t recive = 0;
 								memcpy(&recive,&usRegHoldBuf[WiRegIndex],WusNRegs*2);
-								if(recive > 0)
+								if(recive == 1)
 								{
+									t_data->write_at24(IIC_OUT_CHANNEL,recive,sizeof(recive));
 									t_data->open_output();
-								}else
+								}else if(recive == 0)
 								{
 									t_data->close_output();
+									t_data->write_at24(IIC_OUT_CHANNEL,recive,sizeof(recive));
+								}else
+								{
+									eStatus = MB_ENOREG;
 								}
-								t_data->write_at24(IIC_OUT_CHANNEL,recive,sizeof(recive));
+								
 							}else if(usAddress == STS_CHOISE_INPUT)
 							{
 								uint16_t recive = 0;

+ 1 - 1
control/STS/MODBUS/BARE/port/portserial.c

@@ -72,7 +72,7 @@ vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )
 BOOL
 xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity )
 {
-	nvic_irq_enable(USART0_IRQn, 0);     //使能串口中断,设置优先级
+	nvic_irq_enable(USART0_IRQn, 1);     //使能串口中断,设置优先级
   rcu_periph_clock_enable(RCU_GPIOA);  //使能GPIOA时钟
 
   //配置TX的GPIO 

Разлика између датотеке није приказан због своје велике величине
+ 1976 - 55
control/STS/PRJ/sts.uvguix.Gowon


+ 40 - 4
control/STS/PRJ/sts.uvoptx

@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>13</nTsel>
+        <nTsel>4</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,9 +114,28 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>BIN\UL2V8M.DLL</pMon>
+        <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(6010=-1,-1,-1,-1,0)(6018=-1,-1,-1,-1,0)(6019=-1,-1,-1,-1,0)(6008=-1,-1,-1,-1,0)(6009=-1,-1,-1,-1,0)(6014=-1,-1,-1,-1,0)(6015=-1,-1,-1,-1,0)(6003=-1,-1,-1,-1,0)(6000=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U69545328 -O78 -S5 -ZTIFSpeedSel1000 -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>
           <Key>UL2V8M</Key>
@@ -124,18 +143,35 @@
         </SetRegEntry>
       </TargetDriverDllRegistry>
       <Breakpoint/>
+      <WatchWindow1>
+        <Ww>
+          <count>0</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>sts_data</ItemText>
+        </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>retry</ItemText>
+        </Ww>
+        <Ww>
+          <count>2</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>ADC_RDATA</ItemText>
+        </Ww>
+      </WatchWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>0</aLwin>
+        <aLwin>1</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
         <aPa>0</aPa>
-        <viewmode>0</viewmode>
+        <viewmode>1</viewmode>
         <vrSel>0</vrSel>
         <aSym>0</aSym>
         <aTbox>0</aTbox>

+ 1 - 1
control/STS/PRJ/sts.uvprojx

@@ -313,7 +313,7 @@
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>2</Optim>
+            <Optim>0</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>1</OneElfS>

+ 18 - 7
control/STS/USER/main.c

@@ -33,6 +33,7 @@ int main()
 	InitKey();
 	InitLED();
 	InitTimer();
+	InitRelay();
 	
 	fans_init();
 	beep_init();
@@ -46,7 +47,7 @@ int main()
 	eMBInit(MB_RTU,md_addr,0,115200,MB_PAR_NONE);
 	eMBEnable();
 	
-	Fwdgt_Init();
+//	Fwdgt_Init();
 	
 	sts_data.read_input_level(INPUT_CHANNEL_1);
 	sts_data.read_input_level(INPUT_CHANNEL_2);
@@ -70,7 +71,7 @@ int main()
 	}
 	uint8_t channel = CH448_CHANNEL_1;
 	while(1){
-		Fwdgt_reload();
+	//	Fwdgt_reload();
 		eMBPoll();
 		sts_data.read_temp();
 		// read consumer
@@ -81,6 +82,9 @@ int main()
 			if(sts_data.beep_flag)
 			{
 				sts_data.beep();
+			}else
+			{
+				
 			}
 		}
 		if(sts_data.flag_100ms)
@@ -92,7 +96,7 @@ int main()
 			channel ++;
 		}
 		
-		if(channel == CH448_CHANNEL_3)
+		if(channel == CH448_CHANNEL_NONE)
 		{
 			//check input and is or not swtict input 
 			if((sts_data.m_data.input_status.input_status[INPUT_CHANNEL_1]) && 
@@ -113,11 +117,15 @@ int main()
 					}
 				}else if(sts_data.m_data.md_choise.choise_ch == INPUT_CHANNEL_2)
 				{
-					if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_1]))
+					if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_2]))
 					{
-						if(sts_data.m_data.out_status == OUT_OPEN) sts_data.close_output();
-					}else {
-							sts_data.choise_input(INPUT_CHANNEL_1);
+							if(STS_INPUT_HAS_WANNING(sts_data.m_data.input_wanning.waning[INPUT_CHANNEL_1]))
+							{
+								if(sts_data.m_data.out_status == OUT_OPEN) sts_data.close_output();
+							}else
+							{
+								sts_data.choise_input(INPUT_CHANNEL_1);
+							}
 					}
 				}else
 				{
@@ -136,6 +144,9 @@ int main()
 				{
 					if(sts_data.m_data.out_status == OUT_OPEN) sts_data.close_output();
 				}
+			}else
+			{
+				sts_data.beep_flag = 1;
 			}
 			channel = CH448_CHANNEL_1;
 		}

+ 1 - 0
control/STS/USER/main.h

@@ -65,6 +65,7 @@ enum {
 	CH448_CHANNEL_1 = 0,
 	CH448_CHANNEL_2,
 	CH448_CHANNEL_3,
+	CH448_CHANNEL_NONE,
 };