/********************************************************************************************************* * Module : R_Led.c * Abstract : R_Led module displays the relay status! * Version : 1.0.0 * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.) * Complete : 2025-02-16 * Content : None * Note : None *********************************************************************************************************/ #include "R_Led.h" #include "gd32f30x_libopt.h" #include "Sn74lvc573.h" #include "main.h" #define POWER_R2_Y GPIO_PIN_4 #define POWER_R2_G GPIO_PIN_5 #define POWER_R2_R GPIO_PIN_6 #define POWER_R1_Y GPIO_PIN_1 #define POWER_R1_G GPIO_PIN_2 #define POWER_R1_R GPIO_PIN_3 #define POWER_OUT_R GPIO_PIN_14 #define POWER_OUT_G GPIO_PIN_13 #define POWER_OUT_Y GPIO_PIN_12 #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; uint8_t out_status = 0; void r_led_init(void) { rcu_periph_clock_enable(RCU_GPIOD); 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); } void in_r_led_on_off(unsigned char channel) { // if(channel == 0) // { // gpio_bit_set(GPIOD, POWER_R1_G); // gpio_bit_reset(GPIOD, POWER_R2_G); // }else // { // gpio_bit_reset(GPIOD, POWER_R1_G); // gpio_bit_set(GPIOD, POWER_R2_G); // } } void out_r_led(unsigned char status) { // if(status == 0) // { // gpio_bit_set(GPIOD, POWER_OUT_G); // }else // { // gpio_bit_reset(GPIOD, POWER_OUT_G); // } } void show_wanning_led(void) { sts_data_t *data = get_sts(); if(data) { 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_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]) { 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) { value |= OUTPUT_1_STU_G; }else { value != OUTPUT_1_STU_R; } }else { if(wanning_2 == 0 && out_wanning == 0) { value |= OUTPUT_2_STU_G; }else { value != OUTPUT_2_STU_R; } } if(data->m_data.m_rw.rw_data.md_eep.out_status == 1) { value2 = 1; }else value2 = 0; if(value != led_status) { led_status = value; 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); } 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); } } } }