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);
 очень удобно, использую в куче проектов