diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c index 171c93d733..3035855ede 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c @@ -108,7 +108,8 @@ void pin_mode(PinName pin, PinMode mode) { if (pin == NC) return; - uint32_t pin_number = (uint32_t)pin; + uint32_t pin_number = (uint32_t)pin; + uint32_t pin_index = (pin_number & 0xF); uint32_t port_index = (pin_number >> 4); // Get GPIO structure base address and enable clock @@ -141,7 +142,7 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down - gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_number * 2))); - gpio->PUPDR |= (uint32_t)(pupd << (pin_number * 2)); + gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); + gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); }