Files
Leakage-Control/leakage_system/usr/bsp/bsp_buzzer.c
2026-02-24 09:58:06 +08:00

86 lines
1.8 KiB
C

#include "bsp_buzzer.h"
/*开关控制电平,使用同一的电平控制方式*/
#define BUZZER_GPIO_ON GPIO_PIN_SET
#define BUZZER_GPIO_OFF GPIO_PIN_RESET
#define BUZZER_ON HAL_GPIO_WritePin (BUZZER_GPIO_Port, BUZZER_Pin, BUZZER_GPIO_ON)
#define BUZZER_OFF HAL_GPIO_WritePin (BUZZER_GPIO_Port, BUZZER_Pin, BUZZER_GPIO_OFF)
static void bsp_buzzer_init(void);
static void bsp_buzzer_task(void);
static void bsp_buzzer_set(u8 ch,u8 state);
static void bsp_buzzer_on(void);
static void bsp_buzzer_off(void);
static void bsp_buzzer_enable(void);
static void bsp_buzzer_disable(void);
bsp_buzzer_t buzzer =
{
.init = bsp_buzzer_init,
.task = bsp_buzzer_task,
.set.on = bsp_buzzer_on,
.set.off = bsp_buzzer_off,
.set.enable = bsp_buzzer_enable,
.set.disable = bsp_buzzer_disable,
};
bsp_buzzer_t *p_buzzer = &buzzer;
static bsp_buzzer_flash_data_t flash_data;
/*其他外设初始化后快速闪烁,提示初始化完成*/
static void bsp_buzzer_init(void)
{
BUZZER_OFF;
p_buzzer->p_flash_data = &flash_data;
}
static void bsp_buzzer_flash_data_save(void)
{
}
static void bsp_buzzer_task(void)
{
if(USR_DISABLE == p_buzzer->p_flash_data->sw)
{
BUZZER_OFF;
}
else if( USR_ON == p_buzzer->state)
{
BUZZER_ON;
}
else
{
BUZZER_OFF;
}
}
static void bsp_buzzer_on(void)
{
p_buzzer->state = USR_ON;
}
static void bsp_buzzer_off(void)
{
p_buzzer->state = USR_OFF;
}
static void bsp_buzzer_enable(void)
{
if(USR_ENABLE != p_buzzer->p_flash_data->sw)
{
p_buzzer->p_flash_data->sw = USR_ENABLE;
bsp_buzzer_flash_data_save();
}
}
static void bsp_buzzer_disable(void)
{
if(USR_DISABLE != p_buzzer->p_flash_data->sw)
{
p_buzzer->p_flash_data->sw = USR_DISABLE;
bsp_buzzer_flash_data_save();
}
}