#include "Relay.h" #include "gd32e230x_conf.h" static void ConfigRelayGPIO(void); //配置Relay的GPIO static void ConfigRelayGPIO(void) { #if (RelaySlaveChaNum == 6) rcu_periph_clock_enable(RELAY_1_RCU); // gpioA rcu_periph_clock_enable(RELAY_2_6_RCU); // gpioB gpio_mode_set(RELAY_1_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1); gpio_output_options_set(RELAY_1_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1); gpio_bit_reset(RELAY_1_IO, RELAY_1); gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2); gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2); gpio_bit_reset(RELAY_2_6_IO, RELAY_2); gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3); gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3); gpio_bit_reset(RELAY_2_6_IO, RELAY_3); gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4); gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4); gpio_bit_reset(RELAY_2_6_IO, RELAY_4); gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_5); gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5); gpio_bit_reset(RELAY_2_6_IO, RELAY_5); gpio_mode_set(RELAY_2_6_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_6); gpio_output_options_set(RELAY_2_6_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6); gpio_bit_reset(RELAY_2_6_IO, RELAY_6); #elif ((RelaySlaveChaNum <= 4) && !(SUPPORT_TWIN_FIRE)) //使能RCU相关时钟 rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA的时钟 gpio_mode_set(RELAY_1_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1); //设置GPIO模式 gpio_output_options_set(RELAY_1_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_RCU, RELAY_1); //将Relay_1默认状态设置为关闭 //使能RCU相关时钟 rcu_periph_clock_enable(RCU_GPIOB); //使能GPIOB的时钟 gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2); //设置GPIO模式 gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_2_4_RCU, RELAY_2); //将Relay_2默认状态设置为关闭 gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3); //设置GPIO模式 gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_2_4_RCU, RELAY_3); //将Relay_3默认状态设置为关闭 gpio_mode_set(RELAY_2_4_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4); //设置GPIO模式 gpio_output_options_set(RELAY_2_4_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_2_4_RCU, RELAY_4); //将Relay_4默认状态设置为关闭 #else //使能RCU相关时钟 rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA的时钟 //使能RCU相关时钟 rcu_periph_clock_enable(RCU_GPIOB); gpio_mode_set(RELAY_8_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_8); //设置GPIO模式 gpio_output_options_set(RELAY_8_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_8); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_8_RCU, RELAY_8); //将Relay_8默认状态设置为关闭 //使能GPIOA的时钟 gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_1); //设置GPIO模式 gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_7_RCU, RELAY_1); //将Relay_1默认状态设置为关闭 gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_2); //设置GPIO模式 gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_7_RCU, RELAY_2); //将Relay_2默认状态设置为关闭 gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_3); //设置GPIO模式 gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_7_RCU, RELAY_3); //将Relay_3默认状态设置为关闭 gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_4); //设置GPIO模式 gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_7_RCU, RELAY_4); //将Relay_4默认状态设置为关闭 gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_5); //设置GPIO模式 gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_7_RCU, RELAY_5); //将Relay_5默认状态设置为关闭 gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_6); //设置GPIO模式 gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_7_RCU, RELAY_6); //将Relay_6默认状态设置为关闭 gpio_mode_set(RELAY_1_7_RCU, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, RELAY_7); //设置GPIO模式 gpio_output_options_set(RELAY_1_7_RCU, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_7); //设置GPIO输出模式及速度 gpio_bit_reset(RELAY_1_7_RCU, RELAY_7); //将Relay_7默认状态设置为关闭 #endif } /********************************************************************************************************* * 函数名称:InitRelay * 函数功能:初始化LED模块 * 输入参数:void * 输出参数:void * 返 回 值:void * 创建日期:2021年07月01日 * 注 意: *********************************************************************************************************/ void InitRelay(void) { ConfigRelayGPIO(); } #if SURPPORT_2_2 void solid_on() { gpio_bit_set(RELAY_2_4_RCU, RELAY_3); gpio_bit_set(RELAY_2_4_RCU, RELAY_4); } #endif #if SUPPORT_4_ON void solid_4_on(void) { gpio_bit_set(RELAY_1_RCU, RELAY_1); gpio_bit_set(RELAY_2_4_RCU, RELAY_2); gpio_bit_set(RELAY_2_4_RCU, RELAY_3); gpio_bit_set(RELAY_2_4_RCU, RELAY_4); } #endif