stm32-code/stm32f072_usb_custom_hid/User/Src/bsp_led.c

33 lines
1.1 KiB
C

#include "bsp_led.h"
#include "main.h"
static const GPIO_TypeDef *bsp_led_gpio_ports[BSP_LED_COUNT] = {
LED1_GPIO_Port, LED2_GPIO_Port, LED3_GPIO_Port, LED4_GPIO_Port,
LED5_GPIO_Port, LED6_GPIO_Port, LED7_GPIO_Port, LED8_GPIO_Port
};
static const uint16_t bsp_led_pins[BSP_LED_COUNT] = {
LED1_Pin, LED2_Pin, LED3_Pin, LED4_Pin,
LED5_Pin, LED6_Pin, LED7_Pin, LED8_Pin,
};
void bsp_led_set_output(const uint8_t *command)
{
for (uint8_t i = 0; i < BSP_LED_COUNT; i ++) {
if (command[i] == bsp_led_command_on) {
HAL_GPIO_WritePin((GPIO_TypeDef *)bsp_led_gpio_ports[i], bsp_led_pins[i], GPIO_PIN_SET);
} else if (command[i] == bsp_led_command_off) {
HAL_GPIO_WritePin((GPIO_TypeDef *)bsp_led_gpio_ports[i], bsp_led_pins[i], GPIO_PIN_RESET);
} else if (command[i] == bsp_led_command_toggle) {
HAL_GPIO_TogglePin((GPIO_TypeDef *)bsp_led_gpio_ports[i], bsp_led_pins[i]);
}
}
}
void bsp_led_get_status(uint8_t *status)
{
for (uint8_t i = 0; i < BSP_LED_COUNT; i ++) {
status[i] = bsp_led_gpio_ports[i]->ODR & bsp_led_pins[i] ? 1 : 0;
}
}