bsp ? у вас плюсы (( на чистом Си делаю так все выводы мк отдефайнены так
#define PINA_0 0x00
#define PINA_1 0x01
...
#define PIND_0 0x30
#define PIND_1 0x31
каждый вывод объявлен так
typedef struct
{
uint8_t pin:7;
uint8_t pin_mode:7;
uint8_t def_lvl:1;
uint8_t dev_out_system:1;
}gpio_set_t;
#define LED1 (gpio_set_t){PINA_10, GPIO_Mode_Out_PP, DEF_LOW_LVL, NO_DEV_OUT}
#define INT_ACSEL (gpio_set_t){PINB_1, GPIO_Mode_IPU, DEF_HIGH_LVL, NO_DEV_OUT}
#define CS_ACSEL (gpio_set_t){PINB_2, GPIO_Mode_Out_PP, DEF_HIGH_LVL, NO_DEV_OUT}
#define IN_1 (gpio_set_t){PINB_14, GPIO_Mode_IPD, DEF_LOW_LVL, NO_DEV_OUT}
установка сброс уровней по пину через простые функции
set_pin_active(LED1);
set_pin_inactive(LED1);
get_pin_status(IN_1);
очень удобно, использую в куче проектов