Relay.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "Relay.h"
  2. #include "gd32e230x_conf.h"
  3. static void ConfigRelayGPIO(void); //配置Relay的GPIO
  4. static void ConfigRelayGPIO(void)
  5. {
  6. //使能RCU相关时钟
  7. rcu_periph_clock_enable(RELAY_RCU);
  8. #if (RelaySlaveChaNum >=1)
  9. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_1);
  10. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1);
  11. gpio_bit_reset(RELAY_GPIO, RELAY_1);
  12. #endif
  13. #if (RelaySlaveChaNum >=2)
  14. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_2);
  15. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2);
  16. gpio_bit_reset(RELAY_GPIO, RELAY_2);
  17. #endif
  18. #if (RelaySlaveChaNum >=3)
  19. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_3);
  20. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3);
  21. gpio_bit_reset(RELAY_GPIO, RELAY_3);
  22. #endif
  23. #if (RelaySlaveChaNum >=4)
  24. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_4);
  25. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4);
  26. gpio_bit_reset(RELAY_GPIO, RELAY_4);
  27. #endif
  28. #if (RelaySlaveChaNum >=5)
  29. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_5);
  30. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5);
  31. gpio_bit_reset(RELAY_GPIO, RELAY_5);
  32. #endif
  33. #if (RelaySlaveChaNum >=6)
  34. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_6);
  35. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6);
  36. gpio_bit_reset(RELAY_GPIO, RELAY_6);
  37. #endif
  38. #if (RelaySlaveChaNum >=7)
  39. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_7);
  40. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_7);
  41. gpio_bit_reset(RELAY_GPIO, RELAY_7);
  42. #endif
  43. #if (RelaySlaveChaNum >=8)
  44. gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_8);
  45. gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_8);
  46. gpio_bit_reset(RELAY_GPIO, RELAY_8);
  47. #endif
  48. }
  49. /*********************************************************************************************************
  50. * 函数名称:InitRelay
  51. * 函数功能:初始化LED模块
  52. * 输入参数:void
  53. * 输出参数:void
  54. * 返 回 值:void
  55. * 创建日期:2021年07月01日
  56. * 注 意:
  57. *********************************************************************************************************/
  58. void InitRelay(void)
  59. {
  60. ConfigRelayGPIO();
  61. }
  62. #if SURPPORT_2_2
  63. void solid_on()
  64. {
  65. gpio_bit_set(RELAY_2_4_RCU, RELAY_3);
  66. gpio_bit_set(RELAY_2_4_RCU, RELAY_4);
  67. }
  68. #endif