55 lines
1.7 KiB
C
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;
|
|
}
|
|
}
|