mbed library sources

Fork of mbed-src by mbed official

Revision:
537:c61a9ac6f5c2
Parent:
508:4f5903e025e6
--- a/targets/hal/TARGET_STM/TARGET_STM32F1/pinmap.c	Thu May 07 09:00:08 2015 +0100
+++ b/targets/hal/TARGET_STM/TARGET_STM32F1/pinmap.c	Thu May 07 09:15:08 2015 +0100
@@ -177,12 +177,21 @@
             if (pin_index < 8) {
                 if ((gpio->CRL & (0x03 << (pin_index * 4))) == 0) { // MODE bits = Input mode
                     gpio->CRL |= (0x08 << (pin_index * 4)); // Set pull-up / pull-down
+                    gpio->CRL &= ~(0x08 << ((pin_index * 4)-1)); // ENSURES GPIOx_CRL.CNFx.bit0 = 0
                 }
             } else {
                 if ((gpio->CRH & (0x03 << ((pin_index % 8) * 4))) == 0) { // MODE bits = Input mode
                     gpio->CRH |= (0x08 << ((pin_index % 8) * 4)); // Set pull-up / pull-down
+                    gpio->CRH &= ~(0x08 << (((pin_index % 8) * 4)-1)); // ENSURES GPIOx_CRH.CNFx.bit0 = 0
                 }
             }
+            // Now it's time to setup properly if pullup or pulldown. This is done in ODR register:
+            // set pull-up => bit=1, set pull-down => bit = 0
+            if (mode == PullUp) {
+                gpio->ODR |= (0x01 << (pin_index)); // Set pull-up
+            } else{
+                gpio->ODR &= ~(0x01 << (pin_index)); // Set pull-down
+            }
             break;
         case OpenDrain:
             // Set open-drain for Output mode (General Purpose or Alternate Function)