R_Led.c 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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_4
  15. #define POWER_R2_G GPIO_PIN_5
  16. #define POWER_R2_R GPIO_PIN_6
  17. #define POWER_R1_Y GPIO_PIN_1
  18. #define POWER_R1_G GPIO_PIN_2
  19. #define POWER_R1_R GPIO_PIN_3
  20. #define POWER_OUT_R GPIO_PIN_14
  21. #define POWER_OUT_G GPIO_PIN_13
  22. #define POWER_OUT_Y GPIO_PIN_12
  23. #define INPUT_1_STU_G GPIO_PIN_3
  24. #define INPUT_1_STU_R GPIO_PIN_4
  25. #define INPUT_2_STU_G GPIO_PIN_6
  26. #define INPUT_2_STU_R GPIO_PIN_5
  27. #define OUTPUT_1_STU_G GPIO_PIN_1
  28. #define OUTPUT_1_STU_R GPIO_PIN_2
  29. #define OUTPUT_2_STU_G GPIO_PIN_13
  30. #define OUTPUT_2_STU_R GPIO_PIN_12
  31. #define OUTPUT_STU_G GPIO_PIN_2
  32. #define OUTPUT_STU_R GPIO_PIN_14
  33. uint16_t led_status = 0;
  34. uint8_t out_status = 0;
  35. void r_led_init(void)
  36. {
  37. rcu_periph_clock_enable(RCU_GPIOD);
  38. rcu_periph_clock_enable(RCU_GPIOC);
  39. //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);
  40. gpio_init(GPIOD,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,INPUT_2_STU_G |INPUT_2_STU_R|
  41. OUTPUT_1_STU_G | OUTPUT_1_STU_R |
  42. OUTPUT_2_STU_G | OUTPUT_2_STU_R |
  43. OUTPUT_STU_R |
  44. INPUT_1_STU_G | INPUT_1_STU_R);
  45. gpio_bit_reset(GPIOD,INPUT_2_STU_G |INPUT_2_STU_R|
  46. OUTPUT_1_STU_G | OUTPUT_1_STU_R |
  47. OUTPUT_2_STU_G | OUTPUT_2_STU_R |
  48. OUTPUT_STU_R |
  49. INPUT_1_STU_G | INPUT_1_STU_R);
  50. gpio_init(GPIOC,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,OUTPUT_STU_G);
  51. gpio_bit_reset(GPIOC,OUTPUT_STU_G);
  52. //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);
  53. }
  54. void in_r_led_on_off(unsigned char channel)
  55. {
  56. // if(channel == 0)
  57. // {
  58. // gpio_bit_set(GPIOD, POWER_R1_G);
  59. // gpio_bit_reset(GPIOD, POWER_R2_G);
  60. // }else
  61. // {
  62. // gpio_bit_reset(GPIOD, POWER_R1_G);
  63. // gpio_bit_set(GPIOD, POWER_R2_G);
  64. // }
  65. }
  66. void out_r_led(unsigned char status)
  67. {
  68. // if(status == 0)
  69. // {
  70. // gpio_bit_set(GPIOD, POWER_OUT_G);
  71. // }else
  72. // {
  73. // gpio_bit_reset(GPIOD, POWER_OUT_G);
  74. // }
  75. }
  76. void show_wanning_led(void)
  77. {
  78. sts_data_t *data = get_sts();
  79. if(data)
  80. {
  81. uint16_t value = 0;
  82. uint8_t value2 = 0;
  83. uint16_t wanning_1 = *(uint16_t*)&(data->m_data.m_r.r_data.input_wanning.in_wan[0]);
  84. uint16_t wanning_2 = *(uint16_t*)&(data->m_data.m_r.r_data.input_wanning.in_wan[1]);
  85. uint16_t out_wanning = *(uint16_t*)(&data->m_data.m_r.r_data.output_waning.out_waning);
  86. 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])
  87. {
  88. value |= INPUT_1_STU_G;
  89. value |= INPUT_2_STU_G;
  90. }else
  91. {
  92. if(data->m_data.m_r.r_data.input_status.input_status[0])
  93. {
  94. value |= INPUT_1_STU_G;
  95. }else
  96. value |= INPUT_1_STU_R;
  97. if(data->m_data.m_r.r_data.input_status.input_status[1])
  98. {
  99. value |= INPUT_2_STU_G;
  100. }else
  101. value |= INPUT_2_STU_R;
  102. }
  103. if(data->m_data.m_rw.rw_data.chiose_ch == INPUT_CHANNEL_1)
  104. {
  105. if(wanning_1 == 0 && out_wanning == 0)
  106. {
  107. value |= OUTPUT_1_STU_G;
  108. }else
  109. {
  110. value != OUTPUT_1_STU_R;
  111. }
  112. }else
  113. {
  114. if(wanning_2 == 0 && out_wanning == 0)
  115. {
  116. value |= OUTPUT_2_STU_G;
  117. }else
  118. {
  119. value != OUTPUT_2_STU_R;
  120. }
  121. }
  122. if(data->m_data.m_rw.rw_data.md_eep.out_status == 1)
  123. {
  124. value2 = 1;
  125. }else
  126. value2 = 0;
  127. if(value != led_status)
  128. {
  129. led_status = value;
  130. gpio_bit_reset(GPIOD, INPUT_2_STU_G |INPUT_2_STU_R|
  131. OUTPUT_1_STU_G | OUTPUT_1_STU_R |
  132. OUTPUT_2_STU_G | OUTPUT_2_STU_R |
  133. INPUT_1_STU_G | INPUT_1_STU_R);
  134. gpio_bit_set(GPIOD,led_status);
  135. }
  136. if(value2 != out_status)
  137. {
  138. out_status = value2;
  139. gpio_bit_reset(GPIOC,OUTPUT_STU_G);
  140. gpio_bit_reset(GPIOD,OUTPUT_STU_R);
  141. if(out_status)
  142. {
  143. gpio_bit_set(GPIOC,OUTPUT_STU_G);
  144. }else
  145. {
  146. gpio_bit_set(GPIOD,OUTPUT_STU_R);
  147. }
  148. }
  149. }
  150. }