| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*********************************************************************************************************
- * 模块名称:Relay.c
- * 摘 要:Relay模块
- * 当前版本:1.0.0
- * 作 者:anycrying
- * 完成日期:2024年04月11日
- * 内 容:
- * 注 意:
- **********************************************************************************************************
- * 取代版本:
- * 作 者:
- * 完成日期:
- * 修改内容:
- * 修改文件:
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 包含头文件
- *********************************************************************************************************/
- #include "Main.h"
- #include "Relay.h"
- #include "Sn74hc573.h"
- /*********************************************************************************************************
- * 宏定义
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 枚举结构体
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 内部变量定义
- *********************************************************************************************************/
- uint16_t Relay_state = 0;
- /*********************************************************************************************************
- * 内部函数声明
- *********************************************************************************************************/
- static void ConfigRelayGPIO(void); //配置Relay的GPIO
- /*********************************************************************************************************
- * 内部函数实现
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 函数名称:ConfigRelayGPIO
- * 函数功能:配置Relay的GPIO
- * 输入参数:void
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月11日
- * 注 意:
- *********************************************************************************************************/
- static void ConfigRelayGPIO(void)
- {
- //使能RCU相关时钟
- //rcu_periph_clock_enable(Data_Output_RCU);
-
- //gpio_mode_set(Data_Output_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN,DB_Out1 | DB_Out2 | DB_Out3 | DB_Out4 | DB_Out5 | DB_Out6 | DB_Out7 | DB_Out8);//设置GPIO模式
- //gpio_output_options_set(Data_Output_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out1 | DB_Out2 | DB_Out3 | DB_Out4 | DB_Out5 | DB_Out6 | DB_Out7 | DB_Out8); //设置GPIO输出模式及速度
- rcu_periph_clock_enable(Data_Output_RCU_A);
- rcu_periph_clock_enable(Data_Output_RCU_B);
-
- gpio_mode_set(Data_Output_IO_A, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out1); //???1
- gpio_output_options_set(Data_Output_IO_A, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out1); //éè??GPIOê?3??£ê??°?ù?è
- gpio_bit_reset(Data_Output_IO_A, DB_Out1); //??DB_Out1??è?×′ì?éè???a1?±?
-
- gpio_mode_set(Data_Output_IO_B, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out2); //???1
- gpio_output_options_set(Data_Output_IO_B, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out2); //éè??GPIOê?3??£ê??°?ù?è
- gpio_bit_reset(Data_Output_IO_B, DB_Out2); //??DB_Out1??è?×′ì?éè???a1?±?
- gpio_mode_set(Data_Output_IO_B, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out3); //???1
- gpio_output_options_set(Data_Output_IO_B, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out3); //éè??GPIOê?3??£ê??°?ù?è
- gpio_bit_reset(Data_Output_IO_B, DB_Out3); //??DB_Out1??è?×′ì?éè???a1?±?
-
- gpio_mode_set(Data_Output_IO_B, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out4); //???1
- gpio_output_options_set(Data_Output_IO_B, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out4); //éè??GPIOê?3??£ê??°?ù?è
- gpio_bit_reset(Data_Output_IO_B, DB_Out4); //??DB_Out1??è?×′ì?éè???a1?±?
- }
- /*********************************************************************************************************
- * API函数实现
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 函数名称:InitRelay
- * 函数功能:初始化LED模块
- * 输入参数:void
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月11日
- * 注 意:
- *********************************************************************************************************/
- void InitRelay(void)
- {
- ConfigRelayGPIO(); //配置RELAY的GPIO
- }
- /*********************************************************************************************************
- * 函数名称:Relay1State
- * 函数功能:Relay1State模块,控制继电器和更新通道状态
- * 输入参数:RLx:第x路继电器,st:继电器状态
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月11日
- * 注 意:
- *********************************************************************************************************/
- void Relayx_Onoff_state(uint8_t RLx,uint8_t st)
- {
- uint16_t temp0 = 0x0001;
- uint16_t temp1 = 0x0000;
- //uint16_t temp2 = 0x0000;
- temp0 = temp0 << RLx;
- temp1 = ~temp0;
- if(st == RELAY_ON)
- {
- Relay_state |= temp0;
- }
- else
- {
- Relay_state &= temp1;
- }
- /*
- temp0 = Relay_state & 0x0007;//低3位
- temp0 = temp0 << 6;//变成高3位
- temp1 = Relay_state & 0x01c0;//高3位
- temp1 = temp1 >> 6;//变成低3位
- Relay_state &= 0x0038;//只保留中间3位
- Relay_state |= temp0;
- Relay_state |= temp1;
- */
- }
|