Relay.c 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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. #if ACSingPhSmaCurrNew
  51. rcu_periph_clock_enable(RELAY_1_RCU); // gpioA
  52. rcu_periph_clock_enable(RELAY_2_6_RCU); // gpioB
  53. gpio_mode_set(RELAY_1_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1);
  54. gpio_output_options_set(RELAY_1_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1);
  55. gpio_bit_reset(RELAY_1_IO, RELAY_1);
  56. gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2);
  57. gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2);
  58. gpio_bit_reset(RELAY_2_6_IO, RELAY_2);
  59. gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3);
  60. gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3);
  61. gpio_bit_reset(RELAY_2_6_IO, RELAY_3);
  62. gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4);
  63. gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4);
  64. gpio_bit_reset(RELAY_2_6_IO, RELAY_4);
  65. gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_5);
  66. gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5);
  67. gpio_bit_reset(RELAY_2_6_IO, RELAY_5);
  68. gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_6);
  69. gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6);
  70. gpio_bit_reset(RELAY_2_6_IO, RELAY_6);
  71. #else
  72. rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA的时钟
  73. gpio_mode_set(RELAY_8_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_8); //设置GPIO模式
  74. gpio_output_options_set(RELAY_8_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_8); //设置GPIO输出模式及速度
  75. gpio_bit_reset(RELAY_8_RCU, RELAY_8); //将Relay_8默认状态设置为关闭
  76. //使能RCU相关时钟
  77. rcu_periph_clock_enable(RCU_GPIOB); //使能GPIOA的时钟
  78. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1); //设置GPIO模式
  79. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1); //设置GPIO输出模式及速度
  80. gpio_bit_reset(RELAY_1_7_RCU, RELAY_1); //将Relay_1默认状态设置为关闭
  81. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2); //设置GPIO模式
  82. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2); //设置GPIO输出模式及速度
  83. gpio_bit_reset(RELAY_1_7_RCU, RELAY_2); //将Relay_2默认状态设置为关闭
  84. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3); //设置GPIO模式
  85. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3); //设置GPIO输出模式及速度
  86. gpio_bit_reset(RELAY_1_7_RCU, RELAY_3); //将Relay_3默认状态设置为关闭
  87. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4); //设置GPIO模式
  88. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4); //设置GPIO输出模式及速度
  89. gpio_bit_reset(RELAY_1_7_RCU, RELAY_4); //将Relay_4默认状态设置为关闭
  90. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_5); //设置GPIO模式
  91. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5); //设置GPIO输出模式及速度
  92. gpio_bit_reset(RELAY_1_7_RCU, RELAY_5); //将Relay_5默认状态设置为关闭
  93. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_6); //设置GPIO模式
  94. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6); //设置GPIO输出模式及速度
  95. gpio_bit_reset(RELAY_1_7_RCU, RELAY_6); //将Relay_6默认状态设置为关闭
  96. gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_7); //设置GPIO模式
  97. gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_7); //设置GPIO输出模式及速度
  98. gpio_bit_reset(RELAY_1_7_RCU, RELAY_7); //将Relay_7默认状态设置为关闭
  99. #endif
  100. }
  101. #endif
  102. #if ACSingPhHigCurr
  103. /*********************************************************************************************************
  104. * 函数名称:ConfigRelayGPIO
  105. * 函数功能:配置Relay的GPIO
  106. * 输入参数:void
  107. * 输出参数:void
  108. * 返 回 值:void
  109. * 创建日期:2021年07月01日
  110. * 注 意:
  111. *********************************************************************************************************/
  112. static void ConfigRelayGPIO(void)
  113. {
  114. //使能RCU相关时钟
  115. rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA的时钟
  116. gpio_mode_set(RELAY_1_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1); //设置GPIO模式
  117. gpio_output_options_set(RELAY_1_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1); //设置GPIO输出模式及速度
  118. gpio_bit_reset(RELAY_1_RCU, RELAY_1); //将Relay_1默认状态设置为关闭
  119. //使能RCU相关时钟
  120. rcu_periph_clock_enable(RCU_GPIOB); //使能GPIOB的时钟
  121. gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2); //设置GPIO模式
  122. gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2); //设置GPIO输出模式及速度
  123. gpio_bit_reset(RELAY_2_4_RCU, RELAY_2); //将Relay_2默认状态设置为关闭
  124. gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3); //设置GPIO模式
  125. gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3); //设置GPIO输出模式及速度
  126. gpio_bit_reset(RELAY_2_4_RCU, RELAY_3); //将Relay_3默认状态设置为关闭
  127. gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4); //设置GPIO模式
  128. gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4); //设置GPIO输出模式及速度
  129. gpio_bit_reset(RELAY_2_4_RCU, RELAY_4); //将Relay_4默认状态设置为关闭
  130. }
  131. #endif
  132. /*********************************************************************************************************
  133. * API函数实现
  134. *********************************************************************************************************/
  135. /*********************************************************************************************************
  136. * 函数名称:InitRelay
  137. * 函数功能:初始化LED模块
  138. * 输入参数:void
  139. * 输出参数:void
  140. * 返 回 值:void
  141. * 创建日期:2021年07月01日
  142. * 注 意:
  143. *********************************************************************************************************/
  144. void InitRelay(void)
  145. {
  146. ConfigRelayGPIO(); //配置LED的GPIO
  147. }