Relay.c 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /*********************************************************************************************************
  2. * 模块名称:Relay.c
  3. * 摘 要:Relay模块
  4. * 当前版本:1.0.0
  5. * 作 者:Leyutek(COPYRIGHT 2018 - 2021 Leyutek. All rights reserved.)
  6. * 完成日期:2021年07月01日
  7. * 内 容:
  8. * 注 意:
  9. **********************************************************************************************************
  10. * 取代版本:
  11. * 作 者:
  12. * 完成日期:
  13. * 修改内容:
  14. * 修改文件:
  15. *********************************************************************************************************/
  16. /*********************************************************************************************************
  17. * 包含头文件
  18. *********************************************************************************************************/
  19. #include "Relay.h"
  20. #include "gd32e230x_conf.h"
  21. /*********************************************************************************************************
  22. * 宏定义
  23. *********************************************************************************************************/
  24. /*********************************************************************************************************
  25. * 枚举结构体
  26. *********************************************************************************************************/
  27. /*********************************************************************************************************
  28. * 内部变量定义
  29. *********************************************************************************************************/
  30. /*********************************************************************************************************
  31. * 内部函数声明
  32. *********************************************************************************************************/
  33. static void ConfigRelayGPIO(void); //配置Relay的GPIO
  34. /*********************************************************************************************************
  35. * 内部函数实现
  36. *********************************************************************************************************/
  37. #if ACSingPhSmaCurr
  38. /*********************************************************************************************************
  39. * 函数名称:ConfigRelayGPIO
  40. * 函数功能:配置Relay的GPIO
  41. * 输入参数:void
  42. * 输出参数:void
  43. * 返 回 值:void
  44. * 创建日期:2021年07月01日
  45. * 注 意:
  46. *********************************************************************************************************/
  47. static void ConfigRelayGPIO(void)
  48. {
  49. //使能RCU相关时钟
  50. rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA的时钟
  51. gpio_mode_set(RELAY_8_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_8); //设置GPIO模式
  52. gpio_output_options_set(RELAY_8_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_8); //设置GPIO输出模式及速度
  53. gpio_bit_reset(RELAY_8_RCU, RELAY_8); //将Relay_8默认状态设置为关闭
  54. //使能RCU相关时钟
  55. rcu_periph_clock_enable(RCU_GPIOB); //使能GPIOA的时钟
  56. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1); //设置GPIO模式
  57. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1); //设置GPIO输出模式及速度
  58. gpio_bit_reset(RELAY_1_7_RCU, RELAY_1); //将Relay_1默认状态设置为关闭
  59. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2); //设置GPIO模式
  60. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2); //设置GPIO输出模式及速度
  61. gpio_bit_reset(RELAY_1_7_RCU, RELAY_2); //将Relay_2默认状态设置为关闭
  62. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3); //设置GPIO模式
  63. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3); //设置GPIO输出模式及速度
  64. gpio_bit_reset(RELAY_1_7_RCU, RELAY_3); //将Relay_3默认状态设置为关闭
  65. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4); //设置GPIO模式
  66. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4); //设置GPIO输出模式及速度
  67. gpio_bit_reset(RELAY_1_7_RCU, RELAY_4); //将Relay_4默认状态设置为关闭
  68. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_5); //设置GPIO模式
  69. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5); //设置GPIO输出模式及速度
  70. gpio_bit_reset(RELAY_1_7_RCU, RELAY_5); //将Relay_5默认状态设置为关闭
  71. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_6); //设置GPIO模式
  72. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6); //设置GPIO输出模式及速度
  73. gpio_bit_reset(RELAY_1_7_RCU, RELAY_6); //将Relay_6默认状态设置为关闭
  74. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_7); //设置GPIO模式
  75. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_7); //设置GPIO输出模式及速度
  76. gpio_bit_reset(RELAY_1_7_RCU, RELAY_7); //将Relay_7默认状态设置为关闭
  77. }
  78. #endif
  79. #if ACSingPhHigCurr
  80. /*********************************************************************************************************
  81. * 函数名称:ConfigRelayGPIO
  82. * 函数功能:配置Relay的GPIO
  83. * 输入参数:void
  84. * 输出参数:void
  85. * 返 回 值:void
  86. * 创建日期:2021年07月01日
  87. * 注 意:
  88. *********************************************************************************************************/
  89. static void ConfigRelayGPIO(void)
  90. {
  91. //使能RCU相关时钟
  92. rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA的时钟
  93. gpio_mode_set(RELAY_1_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1); //设置GPIO模式
  94. gpio_output_options_set(RELAY_1_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1); //设置GPIO输出模式及速度
  95. gpio_bit_reset(RELAY_1_RCU, RELAY_1); //将Relay_1默认状态设置为关闭
  96. //使能RCU相关时钟
  97. rcu_periph_clock_enable(RCU_GPIOB); //使能GPIOB的时钟
  98. gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2); //设置GPIO模式
  99. gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2); //设置GPIO输出模式及速度
  100. gpio_bit_reset(RELAY_2_4_RCU, RELAY_2); //将Relay_2默认状态设置为关闭
  101. gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3); //设置GPIO模式
  102. gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3); //设置GPIO输出模式及速度
  103. gpio_bit_reset(RELAY_2_4_RCU, RELAY_3); //将Relay_3默认状态设置为关闭
  104. gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4); //设置GPIO模式
  105. gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4); //设置GPIO输出模式及速度
  106. gpio_bit_reset(RELAY_2_4_RCU, RELAY_4); //将Relay_4默认状态设置为关闭
  107. }
  108. #endif
  109. /*********************************************************************************************************
  110. * API函数实现
  111. *********************************************************************************************************/
  112. /*********************************************************************************************************
  113. * 函数名称:InitRelay
  114. * 函数功能:初始化LED模块
  115. * 输入参数:void
  116. * 输出参数:void
  117. * 返 回 值:void
  118. * 创建日期:2021年07月01日
  119. * 注 意:
  120. *********************************************************************************************************/
  121. void InitRelay(void)
  122. {
  123. ConfigRelayGPIO(); //配置LED的GPIO
  124. }