R_Led.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*********************************************************************************************************
  2. * Module : R_Led.c
  3. * Abstract : R_Led module displays the relay status!
  4. * Version : 1.0.0
  5. * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.)
  6. * Complete : 2025-02-16
  7. * Content : None
  8. * Note : None
  9. *********************************************************************************************************/
  10. #include "R_Led.h"
  11. #include "gd32f30x_libopt.h"
  12. #include "Sn74lvc573.h"
  13. #include "main.h"
  14. #define POWER_R2_Y GPIO_PIN_12
  15. #define POWER_R2_G GPIO_PIN_11
  16. #define POWER_R2_R GPIO_PIN_10
  17. #define POWER_R1_Y GPIO_PIN_9
  18. #define POWER_R1_G GPIO_PIN_8
  19. #define POWER_R1_R GPIO_PIN_7
  20. #define ALL_RUN ((1 << 11) | (1 << 8))
  21. #define WANING_1_RUN_2 ((1 << 9) | (1 << 11))
  22. #define WANING_1_WANING_2 ((1 <<12) | (1 << 10) | (1 << 9) | (1 << 7))
  23. #define WANING_2_RUN_1 ((1 << 12) | (1 << 8))
  24. #define CLEAR_LED ((1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12))
  25. uint16_t led_status = 0;
  26. void r_led_init(void)
  27. {
  28. rcu_periph_clock_enable(RCU_GPIOC);
  29. //
  30. // gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_2);
  31. // gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
  32. // gpio_bit_reset(GPIOB, GPIO_PIN_2);
  33. // gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_10);
  34. // gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
  35. // gpio_bit_reset(GPIOB, GPIO_PIN_10);
  36. // gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
  37. // gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
  38. // gpio_bit_reset(GPIOB, GPIO_PIN_11);
  39. 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);
  40. gpio_bit_reset(GPIOC, POWER_R2_Y |POWER_R2_G| POWER_R2_R | POWER_R1_Y | POWER_R1_G | POWER_R1_R);
  41. }
  42. void in_r_led_on_off(unsigned char channel)
  43. {
  44. // if(channel == 0)
  45. // {
  46. // gpio_bit_set(GPIOB, GPIO_PIN_2);
  47. // gpio_bit_reset(GPIOB, GPIO_PIN_10);
  48. // }else
  49. // {
  50. // gpio_bit_reset(GPIOB, GPIO_PIN_2);
  51. // gpio_bit_set(GPIOB, GPIO_PIN_10);
  52. // }
  53. }
  54. void out_r_led(unsigned char status)
  55. {
  56. // if(status == 0)
  57. // {
  58. // gpio_bit_set(GPIOB, GPIO_PIN_11);
  59. // }else
  60. // {
  61. // gpio_bit_reset(GPIOB, GPIO_PIN_11);
  62. // }
  63. }
  64. void show_wanning_led(void)
  65. {
  66. sts_data_t *data = get_sts();
  67. uint16_t pre_status = led_status;
  68. if(data)
  69. {
  70. if(data->m_data.input_wanning.waning[0] == 0 && data->m_data.input_wanning.waning[1] == 0)
  71. {
  72. led_status = ALL_RUN;
  73. if(pre_status != led_status)
  74. {
  75. gpio_bit_reset(GPIOC,CLEAR_LED);
  76. gpio_bit_set(GPIOC,led_status);
  77. unlock();
  78. lock();
  79. }
  80. }else if(data->m_data.input_wanning.waning[0] == 0 && data->m_data.input_wanning.waning[1] > 0)
  81. {
  82. led_status = WANING_2_RUN_1;
  83. if(pre_status != led_status)
  84. {
  85. gpio_bit_reset(GPIOC,CLEAR_LED);
  86. gpio_bit_set(GPIOC,led_status);
  87. unlock();
  88. lock();
  89. }
  90. }else if(data->m_data.input_wanning.waning[0] > 0 && data->m_data.input_wanning.waning[1] > 0)
  91. {
  92. led_status = WANING_1_WANING_2;
  93. if(pre_status != led_status)
  94. {
  95. gpio_bit_reset(GPIOC,CLEAR_LED);
  96. gpio_bit_set(GPIOC,led_status);
  97. unlock();
  98. lock();
  99. }
  100. }else
  101. {
  102. led_status = WANING_1_RUN_2;
  103. if(pre_status != led_status)
  104. {
  105. gpio_bit_reset(GPIOC,CLEAR_LED);
  106. gpio_bit_set(GPIOC,led_status);
  107. unlock();
  108. lock();
  109. }
  110. }
  111. }
  112. }