diff --git a/User/bsp/buzzer_gpio.c b/User/bsp/buzzer_gpio.c new file mode 100644 index 0000000..18783b9 --- /dev/null +++ b/User/bsp/buzzer_gpio.c @@ -0,0 +1,29 @@ +/* Includes ----------------------------------------------------------------- */ +#include "bsp/buzzer_gpio.h" +#include "bsp/bsp.h" +#include + +/* Private define ----------------------------------------------------------- */ +/* Private macro ------------------------------------------------------------ */ +/* Private typedef ---------------------------------------------------------- */ +/* Private variables -------------------------------------------------------- */ + +/* Private function --------------------------------------------------------- */ +/* Exported functions ------------------------------------------------------- */ + +int8_t BSP_Buzzer_Set(BSP_Buzzer_Status_t s) { + switch (s) { + case BSP_BUZZER_ON: + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // 打开蜂鸣器 + break; + case BSP_BUZZER_OFF: + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // 关闭蜂鸣器 + break; + case BSP_BUZZER_TAGGLE: + HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1); // 切换蜂鸣器状态 + break; + default: + return -1; // 无效的状态 + } + return 0; // 成功 +} \ No newline at end of file diff --git a/User/bsp/buzzer_gpio.h b/User/bsp/buzzer_gpio.h new file mode 100644 index 0000000..8e43de4 --- /dev/null +++ b/User/bsp/buzzer_gpio.h @@ -0,0 +1,20 @@ +#pragma once + +/* Includes ----------------------------------------------------------------- */ +#include + +/* Exported constants ------------------------------------------------------- */ +/* Exported macro ----------------------------------------------------------- */ +/* Exported types ----------------------------------------------------------- */ + +/* Buzzer状态,设置用 */ +typedef enum +{ + BSP_BUZZER_ON, + BSP_BUZZER_OFF, + BSP_BUZZER_TAGGLE, +} BSP_Buzzer_Status_t; + +/* Exported functions prototypes -------------------------------------------- */ + +int8_t BSP_Buzzer_Set(BSP_Buzzer_Status_t s); diff --git a/User/bsp/led_gpio.c b/User/bsp/led_gpio.c new file mode 100644 index 0000000..0bbfe01 --- /dev/null +++ b/User/bsp/led_gpio.c @@ -0,0 +1,39 @@ +/* Includes ----------------------------------------------------------------- */ +#include "bsp/led_gpio.h" +#include "bsp/bsp.h" +#include + +/* Private define ----------------------------------------------------------- */ +/* Private macro ------------------------------------------------------------ */ +/* Private typedef ---------------------------------------------------------- */ +/* Private variables -------------------------------------------------------- */ +static uint32_t led_stats; // 使用位掩码记录每个通道的状态 + +// 定义 LED 引脚映射表 +static const uint16_t LED_PINS[] = {GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_4}; + +/* Private function --------------------------------------------------------- */ +/* Exported functions ------------------------------------------------------- */ +int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s) { + if (ch >= BSP_LED_1 && ch <= BSP_LED_3) { + uint16_t pin = LED_PINS[ch - BSP_LED_1]; // 获取对应的 GPIO 引脚 + switch (s) { + case BSP_LED_ON: + led_stats |= (1 << ch); // 设置对应位为1 + HAL_GPIO_WritePin(GPIOA, pin, GPIO_PIN_SET); // 点亮LED + break; + case BSP_LED_OFF: + led_stats &= ~(1 << ch); // 清除对应位为0 + HAL_GPIO_WritePin(GPIOA, pin, GPIO_PIN_RESET); // 熄灭LED + break; + case BSP_LED_TAGGLE: + led_stats ^= (1 << ch); // 切换对应位 + HAL_GPIO_TogglePin(GPIOA, pin); // 切换LED状态 + break; + default: + return -1; // 无效的状态 + } + return 0; // 成功 + } + return -1; // 无效的通道 +} \ No newline at end of file diff --git a/User/bsp/led_gpio.h b/User/bsp/led_gpio.h new file mode 100644 index 0000000..75d4db5 --- /dev/null +++ b/User/bsp/led_gpio.h @@ -0,0 +1,28 @@ +#pragma once + +/* Includes ----------------------------------------------------------------- */ +#include + +/* Exported constants ------------------------------------------------------- */ +/* Exported macro ----------------------------------------------------------- */ +/* Exported types ----------------------------------------------------------- */ + +/* LED灯状态,设置用 */ +typedef enum +{ + BSP_LED_ON, + BSP_LED_OFF, + BSP_LED_TAGGLE, +} BSP_LED_Status_t; + +/* LED通道 */ +typedef enum +{ + BSP_LED_1, + BSP_LED_2, + BSP_LED_3, +} BSP_LED_Channel_t; + +/* Exported functions prototypes -------------------------------------------- */ + +int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s);