/* Includes ----------------------------------------------------------------- */ #include "bsp/led_gpio.h" #include "bsp/bsp.h" #include /* Private define ----------------------------------------------------------- */ /* Private macro ------------------------------------------------------------ */ /* Private typedef ---------------------------------------------------------- */ /* Private variables -------------------------------------------------------- */ static uint32_t led_stats; // 使用位掩码记录每个通道的状态,最多支持32LED // 定义 LED 引脚和端口映射表:需要根据自己的修改,添加,或删减。 static const BSP_LED_Config_t LED_CONFIGS[] = { {GPIOA, GPIO_PIN_2}, // BSP_LED_1 {GPIOA, GPIO_PIN_3}, // BSP_LED_2 {GPIOA, GPIO_PIN_4}, // BSP_LED_3 }; #define LED_CHANNEL_COUNT (sizeof(LED_CONFIGS) / sizeof(LED_CONFIGS[0])) // 通道数量 /* Private function --------------------------------------------------------- */ /* Exported functions ------------------------------------------------------- */ int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s) { if (ch < LED_CHANNEL_COUNT) { GPIO_TypeDef *port = LED_CONFIGS[ch].port; uint16_t pin = LED_CONFIGS[ch].pin; switch (s) { case BSP_LED_ON: led_stats |= (1 << ch); HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET); // 点亮LED break; case BSP_LED_OFF: led_stats &= ~(1 << ch); HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET); // 熄灭LED break; case BSP_LED_TAGGLE: led_stats ^= (1 << ch); HAL_GPIO_TogglePin(port, pin); // 切换LED状态 break; default: return BSP_ERR; } return BSP_OK; } return BSP_ERR; }