Files
2026-02-24 09:58:06 +08:00

55 lines
1.7 KiB
C

#include "bsp_relay.h"
/*开关控制电平,使用同一的电平控制方式*/
#define RELAY_GPIO_ON GPIO_PIN_SET
#define RELAY_GPIO_OFF GPIO_PIN_RESET
#define RELAY_1_ON HAL_GPIO_WritePin (RELAY_1_GPIO_Port, RELAY_1_Pin, RELAY_GPIO_ON)
#define RELAY_1_OFF HAL_GPIO_WritePin (RELAY_1_GPIO_Port, RELAY_1_Pin, RELAY_GPIO_OFF)
#define RELAY_2_ON HAL_GPIO_WritePin (RELAY_2_GPIO_Port, RELAY_2_Pin, RELAY_GPIO_ON)
#define RELAY_2_OFF HAL_GPIO_WritePin (RELAY_2_GPIO_Port, RELAY_2_Pin, RELAY_GPIO_OFF)
#define RELAY_3_ON HAL_GPIO_WritePin (RELAY_3_GPIO_Port, RELAY_3_Pin, RELAY_GPIO_ON)
#define RELAY_3_OFF HAL_GPIO_WritePin (RELAY_3_GPIO_Port, RELAY_3_Pin, RELAY_GPIO_OFF)
#define RELAY_4_ON HAL_GPIO_WritePin (RELAY_4_GPIO_Port, RELAY_4_Pin, RELAY_GPIO_ON)
#define RELAY_4_OFF HAL_GPIO_WritePin (RELAY_4_GPIO_Port, RELAY_4_Pin, RELAY_GPIO_OFF)
static void bsp_relay_init(void);
static void bsp_relay_task(void);
static void bsp_relay_set(u8 ch,u8 state);
bsp_relay_t relay =
{
.init = bsp_relay_init,
.task = bsp_relay_task,
.set = bsp_relay_set,
};
bsp_relay_t *p_relay = &relay;
/*其他外设初始化后快速闪烁,提示初始化完成*/
static void bsp_relay_init(void)
{
RELAY_1_OFF;
RELAY_2_OFF;
RELAY_3_OFF;
RELAY_4_OFF;
}
static void bsp_relay_task(void)
{
(USR_ON == p_relay->state[0]) ? RELAY_1_ON : RELAY_1_OFF;
(USR_ON == p_relay->state[1]) ? RELAY_2_ON : RELAY_2_OFF;
(USR_ON == p_relay->state[2]) ? RELAY_3_ON : RELAY_3_OFF;
(USR_ON == p_relay->state[3]) ? RELAY_4_ON : RELAY_4_OFF;
}
/*控制对应通道状态*/
static void bsp_relay_set(u8 ch,u8 state)
{
if(ch < BSP_RELAY_CH_NUM)
{
p_relay->state[ch] = state;
}
}