Selaa lähdekoodia

STS 处理 清理按键bug,新灯光逻辑。

liyi 1 kuukausi sitten
vanhempi
commit
ba3de3f515

+ 2 - 0
truing_control/STS_FreeRTOS/HARDWARE/Exti/Exti.c

@@ -187,6 +187,8 @@ void EXTI5_9_IRQHandler(void)
 			data->i_beep_flag[0].beep_waning = 0;
 			data->i_beep_flag[0].beep_waning = 0;
 			data->i_beep_flag[1].beep_waning = 0;
 			data->i_beep_flag[1].beep_waning = 0;
 			data->o_beep_flag.beep_waning = 0;
 			data->o_beep_flag.beep_waning = 0;
+			beep_timer_stop();
+			data->clear_beep();
 		}
 		}
 	}
 	}
 }
 }

+ 90 - 68
truing_control/STS_FreeRTOS/HARDWARE/R_Led/R_Led.c

@@ -30,18 +30,54 @@
 
 
 
 
 
 
+#define INPUT_1_STU_G    GPIO_PIN_3
+#define INPUT_1_STU_R    GPIO_PIN_4
 
 
 
 
 
 
+#define INPUT_2_STU_G    GPIO_PIN_6
+#define INPUT_2_STU_R    GPIO_PIN_5
+
+#define OUTPUT_1_STU_G   GPIO_PIN_1
+#define OUTPUT_1_STU_R   GPIO_PIN_2
+
+
+#define OUTPUT_2_STU_G   GPIO_PIN_13
+#define OUTPUT_2_STU_R   GPIO_PIN_12
+
+
+#define OUTPUT_STU_G   	 GPIO_PIN_2
+#define OUTPUT_STU_R   	 GPIO_PIN_14
+
+
 uint16_t led_status = 0;
 uint16_t led_status = 0;
+uint8_t  out_status = 0;
 
 
 
 
 void r_led_init(void)
 void r_led_init(void)
 {
 {
 	rcu_periph_clock_enable(RCU_GPIOD);  
 	rcu_periph_clock_enable(RCU_GPIOD);  
-
-	gpio_init(GPIOD,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,POWER_R2_Y |POWER_R2_G| POWER_R2_R | POWER_R1_Y | POWER_R1_G | POWER_R1_R | POWER_OUT_R | POWER_OUT_G | POWER_OUT_Y);
-	gpio_bit_reset(GPIOD, POWER_R2_Y |POWER_R2_G| POWER_R2_R | POWER_R1_Y | POWER_R1_G | POWER_R1_R | POWER_OUT_R | POWER_OUT_G | POWER_OUT_Y);	
+	rcu_periph_clock_enable(RCU_GPIOC);  
+
+	//gpio_init(GPIOD,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,POWER_R2_Y |POWER_R2_G| POWER_R2_R | POWER_R1_Y | POWER_R1_G | POWER_R1_R | POWER_OUT_R | POWER_OUT_G | POWER_OUT_Y);
+	gpio_init(GPIOD,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,INPUT_2_STU_G |INPUT_2_STU_R| 
+																									OUTPUT_1_STU_G | OUTPUT_1_STU_R | 
+																									OUTPUT_2_STU_G | OUTPUT_2_STU_R | 
+																									OUTPUT_STU_R | 
+																									INPUT_1_STU_G | INPUT_1_STU_R);
+	
+	
+	gpio_bit_reset(GPIOD,INPUT_2_STU_G |INPUT_2_STU_R| 
+																									OUTPUT_1_STU_G | OUTPUT_1_STU_R | 
+																									OUTPUT_2_STU_G | OUTPUT_2_STU_R | 
+																									OUTPUT_STU_R | 
+																									INPUT_1_STU_G | INPUT_1_STU_R);
+	
+	
+		gpio_init(GPIOC,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,OUTPUT_STU_G);
+		gpio_bit_reset(GPIOC,OUTPUT_STU_G);
+	
+	//gpio_bit_reset(GPIOD, POWER_R2_Y |POWER_R2_G| POWER_R2_R | POWER_R1_Y | POWER_R1_G | POWER_R1_R | POWER_OUT_R | POWER_OUT_G | POWER_OUT_Y);	
 	
 	
 }
 }
 
 
@@ -76,92 +112,78 @@ void show_wanning_led(void)
 	if(data)
 	if(data)
 	{
 	{
 		uint16_t value = 0;
 		uint16_t value = 0;
+		uint8_t  value2 = 0;
 		uint16_t wanning_1 = *(uint16_t*)&(data->m_data.m_r.r_data.input_wanning.in_wan[0]);
 		uint16_t wanning_1 = *(uint16_t*)&(data->m_data.m_r.r_data.input_wanning.in_wan[0]);
 		uint16_t wanning_2 = *(uint16_t*)&(data->m_data.m_r.r_data.input_wanning.in_wan[1]);
 		uint16_t wanning_2 = *(uint16_t*)&(data->m_data.m_r.r_data.input_wanning.in_wan[1]);
+		uint16_t out_wanning = *(uint16_t*)(&data->m_data.m_r.r_data.output_waning.out_waning);
 		if(data->m_data.m_r.r_data.input_status.input_status[0] && data->m_data.m_r.r_data.input_status.input_status[1])
 		if(data->m_data.m_r.r_data.input_status.input_status[0] && data->m_data.m_r.r_data.input_status.input_status[1])
 		{
 		{
-			if(wanning_1 == 0 &&  wanning_1 == 0)
+			value |= INPUT_1_STU_G;
+			value |= INPUT_2_STU_G;
+		}else
+		{
+			if(data->m_data.m_r.r_data.input_status.input_status[0])
+			{
+				value |= INPUT_1_STU_G;
+			}else
+				value |= INPUT_1_STU_R;
+
+			if(data->m_data.m_r.r_data.input_status.input_status[1])
+			{
+				value |= INPUT_2_STU_G;
+			}else
+				value |= INPUT_2_STU_R;						
+		}
+		
+		if(data->m_data.m_rw.rw_data.chiose_ch == INPUT_CHANNEL_1)
+		{
+			if(wanning_1 == 0 && out_wanning == 0)
 			{
 			{
-					if(data->m_data.m_rw.rw_data.chiose_ch == INPUT_CHANNEL_1)
-					{
-						value |= POWER_R1_G;
-					}else
-					{
-						value |= POWER_R2_G;
-					}
+				value |= OUTPUT_1_STU_G;
 			}else
 			}else
 			{
 			{
-				if(wanning_1 != 0)
-				{
-					value |= POWER_R1_Y;
-				}else
-				{
-					value |= POWER_R1_G;
-				}
-				if(wanning_2 != 0)
-				{
-					value |= POWER_R2_Y;
-				}else
-				{
-					value |= POWER_R2_G;
-				}
+				value != OUTPUT_1_STU_R;
 			}
 			}
-
+			
+			 
 		}else
 		}else
 		{
 		{
-			if(data->m_data.m_r.r_data.input_status.input_status[0] == 0)
+			if(wanning_2 == 0 && out_wanning == 0)
 			{
 			{
-				value |=POWER_R1_R;
-				if(data->m_data.m_r.r_data.input_status.input_status[1]== 1)
-				{
-					if(wanning_2 != 0)
-					{
-						value |= POWER_R2_Y;
-					}else
-						value |= POWER_R2_G;
-				
-				}
-				if(wanning_1 != 0)
-				{
-					value |= POWER_R1_Y;
-				}
-			}
-			if(data->m_data.m_r.r_data.input_status.input_status[1]== 0)
+				value |= OUTPUT_2_STU_G;
+			}else
 			{
 			{
-				value |=POWER_R2_R;
-				if(data->m_data.m_r.r_data.input_status.input_status[0] == 1)
-				{
-					if(wanning_1!= 0)
-					{
-						value |= POWER_R1_Y;
-					}else
-						value |=POWER_R1_G;
-				}
-				if(wanning_2 != 0)
-				{
-					value |= POWER_R2_Y;
-				}				
-			}
+				value != OUTPUT_2_STU_R;
+			}		
 		}
 		}
-		uint16_t out_wanning = *(uint16_t*)(&data->m_data.m_r.r_data.output_waning.out_waning);
 		if(data->m_data.m_rw.rw_data.md_eep.out_status == 1)
 		if(data->m_data.m_rw.rw_data.md_eep.out_status == 1)
 		{
 		{
-			if(out_wanning != 0)
-				value |= POWER_OUT_Y;
-			else
-				value |= POWER_OUT_G;
+			value2 = 1;
 		}else
 		}else
-		{
-			if(out_wanning != 0)
-				value |= POWER_OUT_Y;
-			value |= POWER_OUT_R;
-		}
+			value2 = 0;
 		
 		
 		if(value != led_status)
 		if(value != led_status)
 		{
 		{
 			led_status = value;
 			led_status = value;
-			gpio_bit_reset(GPIOD, POWER_R2_Y |POWER_R2_G| POWER_R2_R | POWER_R1_Y | POWER_R1_G | POWER_R1_R | POWER_OUT_R | POWER_OUT_G | POWER_OUT_Y);	
+			gpio_bit_reset(GPIOD, INPUT_2_STU_G |INPUT_2_STU_R| 
+																									OUTPUT_1_STU_G | OUTPUT_1_STU_R | 
+																									OUTPUT_2_STU_G | OUTPUT_2_STU_R | 
+																									INPUT_1_STU_G | INPUT_1_STU_R);	
 			gpio_bit_set(GPIOD,led_status);
 			gpio_bit_set(GPIOD,led_status);
 		}
 		}
+		
+		if(value2 != out_status)
+		{
+			out_status = value2;
+			gpio_bit_reset(GPIOC,OUTPUT_STU_G);
+			gpio_bit_reset(GPIOD,OUTPUT_STU_R);
+			if(out_status)
+			{
+				gpio_bit_set(GPIOC,OUTPUT_STU_G);
+			}else
+			{
+				gpio_bit_set(GPIOD,OUTPUT_STU_R);
+			}
+		}
 	}
 	}
 }
 }

+ 3 - 0
truing_control/STS_FreeRTOS/HARDWARE/Timer/Timer.c

@@ -58,6 +58,8 @@ static uint32_t   beep_cnt = 0;
 
 
 uint8_t  recode_normal_channl = 0;
 uint8_t  recode_normal_channl = 0;
 uint8_t  recode_normal_flag = 0;
 uint8_t  recode_normal_flag = 0;
+uint8_t  recode_channel = 0;
+
 
 
 void TIMER2_IRQHandler(void)
 void TIMER2_IRQHandler(void)
 {  
 {  
@@ -117,6 +119,7 @@ void TIMER2_IRQHandler(void)
 				{
 				{
 					recode_normal_channl = 0;
 					recode_normal_channl = 0;
 					recode_normal_flag = 1;
 					recode_normal_flag = 1;
+					recode_channel = INPUT_CHANNEL_1;
 					data->choise_input(INPUT_CHANNEL_1);
 					data->choise_input(INPUT_CHANNEL_1);
 				}
 				}
 			}
 			}

+ 2 - 0
truing_control/STS_FreeRTOS/MODBUS/BARE/port/port.c

@@ -256,6 +256,8 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 								t_data->i_beep_flag[0].beep_waning = 0;
 								t_data->i_beep_flag[0].beep_waning = 0;
 								t_data->i_beep_flag[1].beep_waning = 0;
 								t_data->i_beep_flag[1].beep_waning = 0;
 								t_data->o_beep_flag.beep_waning = 0;
 								t_data->o_beep_flag.beep_waning = 0;
+								beep_timer_stop();
+								t_data->clear_beep();
 							}
 							}
 							else
 							else
 							{
 							{

+ 30 - 14
truing_control/STS_FreeRTOS/USER/main.c

@@ -70,21 +70,27 @@ void task_1s(void *pvParameters);
 TimerHandle_t timer1_handle = 0;
 TimerHandle_t timer1_handle = 0;
 int32_t count = 0;
 int32_t count = 0;
 uint32_t interval = 0;
 uint32_t interval = 0;
+uint32_t timer_beep_flag = 0;
 
 
 
 
 
 
 void beep_timer_start(int cou2,uint32_t inval)
 void beep_timer_start(int cou2,uint32_t inval)
 {
 {
-	xTimerStop(timer1_handle,portMAX_DELAY);
+	if(timer_beep_flag == 1)
+		xTimerStop(timer1_handle,portMAX_DELAY);
+	timer_beep_flag = 0;
 	count = cou2;
 	count = cou2;
 	interval = inval;
 	interval = inval;
 	xTimerChangePeriod(timer1_handle,interval,portMAX_DELAY);
 	xTimerChangePeriod(timer1_handle,interval,portMAX_DELAY);
 	xTimerStart(timer1_handle,portMAX_DELAY);
 	xTimerStart(timer1_handle,portMAX_DELAY);
+	timer_beep_flag = 1;
 }
 }
 
 
 void beep_timer_stop()
 void beep_timer_stop()
 {
 {
-	xTimerStop(timer1_handle,portMAX_DELAY);
+	if(timer_beep_flag == 1)
+		xTimerStop(timer1_handle,portMAX_DELAY);
+	timer_beep_flag = 0;
 }
 }
 
 
 void timer1_callback( TimerHandle_t pxTimer )
 void timer1_callback( TimerHandle_t pxTimer )
@@ -97,6 +103,7 @@ void timer1_callback( TimerHandle_t pxTimer )
 	{
 	{
 			sts_data.clear_beep();
 			sts_data.clear_beep();
 			beep_timer_stop();
 			beep_timer_stop();
+		timer_beep_flag = 0;
 	}else
 	}else
 	{
 	{
 		
 		
@@ -106,6 +113,8 @@ void timer1_callback( TimerHandle_t pxTimer )
 
 
 
 
 extern uint8_t recode_normal_flag;
 extern uint8_t recode_normal_flag;
+extern uint8_t  recode_channel;
+uint8_t counter = 0;
 
 
 void task_100ms(void *pvParameters)
 void task_100ms(void *pvParameters)
 {
 {
@@ -146,12 +155,24 @@ void task_100ms(void *pvParameters)
 						{
 						{
 							sts_data.beep_flag = 0;
 							sts_data.beep_flag = 0;
 							sts_data.input_beep = 0;
 							sts_data.input_beep = 0;
+							if(recode_normal_flag)
+							{
+								counter++;
+								if(counter>= 3)
+								{
+									counter = 0;
+									recode_normal_flag = 0;
+								}
+								channel = 0;
+								vTaskDelay(100);
+								continue;
+							}
 							if(sts_data.m_data.m_rw.rw_data.chiose_ch == INPUT_CHANNEL_1)
 							if(sts_data.m_data.m_rw.rw_data.chiose_ch == INPUT_CHANNEL_1)
 							{
 							{
 								uint16_t wanning_1 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_1]);
 								uint16_t wanning_1 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_1]);
+								uint16_t wanning_2 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_2]);
 								if(wanning_1 >> 8)
 								if(wanning_1 >> 8)
 								{
 								{
-										uint16_t wanning_2 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_2]);
 										if(wanning_2 >> 8 )
 										if(wanning_2 >> 8 )
 										{
 										{
 											if(sts_data.m_data.m_rw.rw_data.md_eep.out_status == OUT_OPEN) 
 											if(sts_data.m_data.m_rw.rw_data.md_eep.out_status == OUT_OPEN) 
@@ -160,25 +181,21 @@ void task_100ms(void *pvParameters)
 										{
 										{
 											if(!recode_normal_flag)
 											if(!recode_normal_flag)
 												sts_data.choise_input(INPUT_CHANNEL_2);
 												sts_data.choise_input(INPUT_CHANNEL_2);
-											else
-												recode_normal_flag = 0;
 										}
 										}
 								}
 								}
 							}else if(sts_data.m_data.m_rw.rw_data.chiose_ch == INPUT_CHANNEL_2)
 							}else if(sts_data.m_data.m_rw.rw_data.chiose_ch == INPUT_CHANNEL_2)
 							{
 							{
 								uint16_t wanning_2 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_2]);
 								uint16_t wanning_2 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_2]);
+								uint16_t wanning_1 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_1]);
 								if(wanning_2 >> 8)
 								if(wanning_2 >> 8)
 								{
 								{
-									uint16_t wanning_1 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_1]);
 										if(wanning_1 >> 8)
 										if(wanning_1 >> 8)
 										{
 										{
 											if(sts_data.m_data.m_rw.rw_data.md_eep.out_status == OUT_OPEN) sts_data.close_output();
 											if(sts_data.m_data.m_rw.rw_data.md_eep.out_status == OUT_OPEN) sts_data.close_output();
 										}else
 										}else
 										{
 										{
 											if(!recode_normal_flag)
 											if(!recode_normal_flag)
-												sts_data.choise_input(INPUT_CHANNEL_1);
-											else
-												recode_normal_flag = 0;
+													sts_data.choise_input(INPUT_CHANNEL_1);
 										}
 										}
 								}
 								}
 							}else
 							}else
@@ -189,8 +206,6 @@ void task_100ms(void *pvParameters)
 						{
 						{
 							if(!sts_data.input_beep){
 							if(!sts_data.input_beep){
 									sts_data.input_beep = 1;
 									sts_data.input_beep = 1;
-//									sts_data.beep_count =sts_data.lost_count;
-//									sts_data.beep_flag = 1;
 									beep_timer_start(20,300);
 									beep_timer_start(20,300);
 							}
 							}
 							uint16_t wanning_1 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_1]);
 							uint16_t wanning_1 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_1]);
@@ -201,8 +216,6 @@ void task_100ms(void *pvParameters)
 						}else if((sts_data.m_data.m_r.r_data.input_status.input_status[INPUT_CHANNEL_2]) ){
 						}else if((sts_data.m_data.m_r.r_data.input_status.input_status[INPUT_CHANNEL_2]) ){
 							if(!sts_data.input_beep){
 							if(!sts_data.input_beep){
 									sts_data.input_beep = 1;
 									sts_data.input_beep = 1;
-//									sts_data.beep_count =sts_data.lost_count;
-//									sts_data.beep_flag = 1;
 								beep_timer_start(20,300);
 								beep_timer_start(20,300);
 							}
 							}
 							uint16_t wanning_2 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_2]);
 							uint16_t wanning_2 = *(uint16_t*)(&sts_data.m_data.m_r.r_data.input_wanning.in_wan[INPUT_CHANNEL_2]);
@@ -231,10 +244,12 @@ void task_10ms(void *pvParameters)
 {
 {
 		sts_data.addr = ReadKeyValue();
 		sts_data.addr = ReadKeyValue();
 		sts_data.baund = 9600;
 		sts_data.baund = 9600;
+		Fwdgt_Init();
 		eMBInit(MB_RTU,sts_data.addr,0,sts_data.baund,MB_PAR_NONE);
 		eMBInit(MB_RTU,sts_data.addr,0,sts_data.baund,MB_PAR_NONE);
 		
 		
     while(1)
     while(1)
     {  
     {  
+			Fwdgt_reload();
 			if(eMBCheck())
 			if(eMBCheck())
 			{
 			{
 				eMBInit(MB_RTU, sts_data.addr, 0, sts_data.baund, MB_PAR_NONE);
 				eMBInit(MB_RTU, sts_data.addr, 0, sts_data.baund, MB_PAR_NONE);
@@ -383,13 +398,14 @@ void start_task(void *pvParameters)
                 (void*          )NULL,
                 (void*          )NULL,
                 (UBaseType_t    )TASK2_PRIO,
                 (UBaseType_t    )TASK2_PRIO,
                 (TaskHandle_t*  )&Task2Task_Handler);
                 (TaskHandle_t*  )&Task2Task_Handler);
-								
+#if 0					
     xTaskCreate((TaskFunction_t )lcd_task,
     xTaskCreate((TaskFunction_t )lcd_task,
                 (const char*    )"task3",
                 (const char*    )"task3",
                 (uint16_t       )TASK3_STK_SIZE,
                 (uint16_t       )TASK3_STK_SIZE,
                 (void*          )NULL,
                 (void*          )NULL,
                 (UBaseType_t    )TASK3_PRIO,
                 (UBaseType_t    )TASK3_PRIO,
                 (TaskHandle_t*  )&Task3Task_Handler);
                 (TaskHandle_t*  )&Task3Task_Handler);
+#endif
     xTaskCreate((TaskFunction_t )task_1s,
     xTaskCreate((TaskFunction_t )task_1s,
                 (const char*    )"task4",
                 (const char*    )"task4",
                 (uint16_t       )TASK4_STK_SIZE,
                 (uint16_t       )TASK4_STK_SIZE,