/********************************************************************************************************* * 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_12 #define POWER_R2_G GPIO_PIN_11 #define POWER_R2_R GPIO_PIN_10 #define POWER_R1_Y GPIO_PIN_9 #define POWER_R1_G GPIO_PIN_8 #define POWER_R1_R GPIO_PIN_7 #define ALL_RUN ((1 << 11) | (1 << 8)) #define WANING_1_RUN_2 ((1 << 9) | (1 << 11)) #define WANING_1_WANING_2 ((1 <<12) | (1 << 10) | (1 << 9) | (1 << 7)) #define WANING_2_RUN_1 ((1 << 12) | (1 << 8)) #define CLEAR_LED ((1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12)) uint16_t led_status = 0; void r_led_init(void) { rcu_periph_clock_enable(RCU_GPIOC); // // gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_2); // gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2); // gpio_bit_reset(GPIOB, GPIO_PIN_2); // gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_10); // gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10); // gpio_bit_reset(GPIOB, GPIO_PIN_10); // gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11); // gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11); // gpio_bit_reset(GPIOB, GPIO_PIN_11); gpio_init(GPIOC,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); gpio_bit_reset(GPIOC, POWER_R2_Y |POWER_R2_G| POWER_R2_R | POWER_R1_Y | POWER_R1_G | POWER_R1_R); } void in_r_led_on_off(unsigned char channel) { // if(channel == 0) // { // gpio_bit_set(GPIOB, GPIO_PIN_2); // gpio_bit_reset(GPIOB, GPIO_PIN_10); // }else // { // gpio_bit_reset(GPIOB, GPIO_PIN_2); // gpio_bit_set(GPIOB, GPIO_PIN_10); // } } void out_r_led(unsigned char status) { // if(status == 0) // { // gpio_bit_set(GPIOB, GPIO_PIN_11); // }else // { // gpio_bit_reset(GPIOB, GPIO_PIN_11); // } } void show_wanning_led(void) { sts_data_t *data = get_sts(); uint16_t pre_status = led_status; if(data) { if(data->m_data.input_wanning.waning[0] == 0 && data->m_data.input_wanning.waning[1] == 0) { led_status = ALL_RUN; if(pre_status != led_status) { gpio_bit_reset(GPIOC,CLEAR_LED); gpio_bit_set(GPIOC,led_status); unlock(); lock(); } }else if(data->m_data.input_wanning.waning[0] == 0 && data->m_data.input_wanning.waning[1] > 0) { led_status = WANING_2_RUN_1; if(pre_status != led_status) { gpio_bit_reset(GPIOC,CLEAR_LED); gpio_bit_set(GPIOC,led_status); unlock(); lock(); } }else if(data->m_data.input_wanning.waning[0] > 0 && data->m_data.input_wanning.waning[1] > 0) { led_status = WANING_1_WANING_2; if(pre_status != led_status) { gpio_bit_reset(GPIOC,CLEAR_LED); gpio_bit_set(GPIOC,led_status); unlock(); lock(); } }else { led_status = WANING_1_RUN_2; if(pre_status != led_status) { gpio_bit_reset(GPIOC,CLEAR_LED); gpio_bit_set(GPIOC,led_status); unlock(); lock(); } } } }