Mbed for VNG board

Fork of mbed-src by mbed official

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Fri Nov 14 10:15:07 2014 +0000
Parent:
403:91a4bea587f4
Child:
405:768bdb09db12
Commit message:
Synchronized with git revision c4901dbb33541e1dcda3fe69a1ec2a11caf496bf

Full URL: https://github.com/mbedmicro/mbed/commit/c4901dbb33541e1dcda3fe69a1ec2a11caf496bf/

Targets: NUCLEOs - Align hal files

Changed in this revision

targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/PinNames.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/device.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/i2c_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pwmout_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/rtc_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/serial_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/i2c_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/rtc_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/serial_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/spi_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/us_ticker.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F091RC/PinNames.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/pwmout_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/spi_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogin_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogout_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/i2c_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/spi_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_irq_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/i2c_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/pwmout_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/rtc_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/serial_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/spi_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_STM/TARGET_NUCLEO_F411RE/spi_api.c Show annotated file Show diff for this revision Revisions of this file
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/PinNames.h	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/PinNames.h	Fri Nov 14 10:15:07 2014 +0000
@@ -36,12 +36,11 @@
 extern "C" {
 #endif
 
+// See stm32f0xx_hal_gpio.h and stm32f0xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
 #define STM_PIN_DATA(MODE, PUPD, AFNUM)  ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
-
 #define STM_PIN_MODE(X)   (((X) >> 0) & 0x0F)
 #define STM_PIN_PUPD(X)   (((X) >> 4) & 0x07)
 #define STM_PIN_AFNUM(X)  (((X) >> 7) & 0x0F)
-
 #define STM_MODE_INPUT              (0)
 #define STM_MODE_OUTPUT_PP          (1)
 #define STM_MODE_OUTPUT_OD          (2)
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/device.h	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/device.h	Fri Nov 14 10:15:07 2014 +0000
@@ -63,7 +63,7 @@
 
 #define DEVICE_STDIO_MESSAGES   1
 
-//#define DEVICE_ERROR_RED      0
+#define DEVICE_ERROR_RED        0
 
 #include "objects.h"
 
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/i2c_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/i2c_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -80,6 +80,7 @@
         pin_mode(sda, OpenDrain);
         pin_mode(scl, OpenDrain);
     }
+
     // Enable I2C2 clock and pinout if not done
     if ((obj->i2c == I2C_2) && !i2c2_inited) {
         i2c2_inited = 1;
@@ -176,7 +177,7 @@
     int count;
     int value;
 
-    /* update CR2 register */
+    // Update CR2 register
     i2c->CR2 = (i2c->CR2 & (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_STOP)))
                | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_READ);
 
@@ -199,7 +200,7 @@
     // If not repeated start, send stop.
     if (stop) {
         i2c_stop(obj);
-        /* Wait until STOPF flag is set */
+        // Wait until STOPF flag is set
         timeout = FLAG_TIMEOUT;
         while (__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_STOPF) == RESET) {
             timeout--;
@@ -207,7 +208,7 @@
                 return -1;
             }
         }
-        /* Clear STOP Flag */
+        // Clear STOP Flag
         __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_STOPF);
     }
 
@@ -221,12 +222,10 @@
     int timeout;
     int count;
 
-    /* update CR2 register */
+    // Update CR2 register
     i2c->CR2 = (i2c->CR2 & (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_STOP)))
                | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_WRITE);
 
-
-
     for (count = 0; count < length; count++) {
         i2c_byte_write(obj, data[count]);
     }
@@ -241,10 +240,10 @@
     }
     __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_TC);
 
-    // If not repeated start, send stop.
+    // If not repeated start, send stop
     if (stop) {
         i2c_stop(obj);
-        /* Wait until STOPF flag is set */
+        // Wait until STOPF flag is set
         timeout = FLAG_TIMEOUT;
         while (__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_STOPF) == RESET) {
             timeout--;
@@ -252,7 +251,7 @@
                 return -1;
             }
         }
-        /* Clear STOP Flag */
+        // Clear STOP Flag
         __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_STOPF);
     }
 
@@ -297,7 +296,7 @@
 {
     int timeout;
 
-    // wait before reset
+    // Wait before reset
     timeout = LONG_TIMEOUT;
     while ((__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_BUSY)) && (timeout-- != 0));
 
@@ -334,7 +333,6 @@
 
 void i2c_slave_mode(i2c_t *obj, int enable_slave)
 {
-
     I2C_TypeDef *i2c = (I2C_TypeDef *)(obj->i2c);
     uint16_t tmpreg;
 
@@ -350,7 +348,6 @@
 
     // Set new mode
     i2c->OAR1 = tmpreg;
-
 }
 
 // See I2CSlave.h
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pwmout_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pwmout_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -36,9 +36,6 @@
 #include "mbed_error.h"
 
 // TIM1 cannot be used because already used by the us_ticker
-// Uncomment/comment line above to use an alternate timer,
-// If the channel is not the same,
-// Please don't forget to uncomment/comment in the pwmout_write() function also
 static const PinMap PinMap_PWM[] = {
     {PA_4,  PWM_14, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_TIM14)}, // TIM14_CH1
     {PA_6,  PWM_3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM3)},  // TIM3_CH1
@@ -128,7 +125,6 @@
         // Channels 1
         case PA_4:
         case PA_6:
-//      case PA_7:
         case PB_1:
         case PB_4:
         case PB_8:
@@ -140,7 +136,6 @@
         // Channels 1N
         case PB_6:
         case PB_7:
-//          case PB_15:
             channel = TIM_CHANNEL_1;
             complementary_channel = 1;
             break;
@@ -157,7 +152,6 @@
             channel = TIM_CHANNEL_3;
             break;
         // Channels 4
-//      case PB_1:
         case PC_9:
             channel = TIM_CHANNEL_4;
             break;
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/rtc_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/rtc_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -59,8 +59,8 @@
 
     // Enable LSE Oscillator
     RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
-    RCC_OscInitStruct.PLL.PLLState   = RCC_PLL_NONE; /* Mandatory, otherwise the PLL is reconfigured! */
-    RCC_OscInitStruct.LSEState       = RCC_LSE_ON; /* External 32.768 kHz clock on OSC_IN/OSC_OUT */
+    RCC_OscInitStruct.PLL.PLLState   = RCC_PLL_NONE; // Mandatory, otherwise the PLL is reconfigured!
+    RCC_OscInitStruct.LSEState       = RCC_LSE_ON; // External 32.768 kHz clock on OSC_IN/OSC_OUT
     if (HAL_RCC_OscConfig(&RCC_OscInitStruct) == HAL_OK) {
         // Connect LSE to RTC
         __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE);
@@ -76,8 +76,8 @@
         }
         // Connect LSI to RTC
         __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSI);
-        // [TODO] This value is LSI typical value. To be measured precisely using a timer input capture.
-        rtc_freq = 32000;
+        // This value is LSI typical value. To be measured precisely using a timer input capture for example.
+        rtc_freq = LSI_VALUE;
     }
 
     // Enable RTC
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/serial_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/serial_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -102,6 +102,7 @@
         __USART1_CLK_ENABLE();
         obj->index = 0;
     }
+
     if (obj->uart == UART_2) {
         __USART2_CLK_ENABLE();
         obj->index = 1;
@@ -110,8 +111,12 @@
     // Configure the UART pins
     pinmap_pinout(tx, PinMap_UART_TX);
     pinmap_pinout(rx, PinMap_UART_RX);
-    pin_mode(tx, PullUp);
-    pin_mode(rx, PullUp);
+    if (tx != NC) {
+        pin_mode(tx, PullUp);
+    }
+    if (rx != NC) {
+        pin_mode(rx, PullUp);
+    }
 
     // Configure UART
     obj->baudrate = 9600;
@@ -139,6 +144,7 @@
         __USART1_RELEASE_RESET();
         __USART1_CLK_DISABLE();
     }
+
     if (obj->uart == UART_2) {
         __USART2_FORCE_RESET();
         __USART2_RELEASE_RESET();
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -154,7 +154,7 @@
         __SPI2_CLK_DISABLE();
     }
 
-    // Configure GPIO
+    // Configure GPIOs
     pin_function(obj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
     pin_function(obj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
     pin_function(obj->pin_sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
@@ -220,6 +220,7 @@
     } else { // >= 24000000
         obj->br_presc = SPI_BAUDRATEPRESCALER_2; // 24 MHz
     }
+
     init_spi(obj);
 }
 
@@ -245,13 +246,12 @@
 {
     SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi);
     while (!ssp_writeable(obj));
-
-    if (obj->bits <= SPI_DATASIZE_8BIT) {
-        // force 8-bit access the data register due to SPI data buffer in this device
+    if (obj->bits == SPI_DATASIZE_8BIT) {
+        // Force 8-bit access to the data register
         uint8_t *p_spi_dr = 0;
         p_spi_dr = (uint8_t *) & (spi->DR);
         *p_spi_dr = (uint8_t)value;
-    } else {
+    } else { // SPI_DATASIZE_16BIT
         spi->DR = (uint16_t)value;
     }
 }
@@ -260,9 +260,8 @@
 {
     SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi);
     while (!ssp_readable(obj));
-
-    if (obj->bits <= SPI_DATASIZE_8BIT) {
-        // force 8-bit access the data register due to SPI data buffer in this device
+    if (obj->bits == SPI_DATASIZE_8BIT) {
+        // Force 8-bit access to the data register
         uint8_t *p_spi_dr = 0;
         p_spi_dr = (uint8_t *) & (spi->DR);
         return (int)(*p_spi_dr);
@@ -294,14 +293,28 @@
 {
     SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi);
     while (!ssp_readable(obj));
-    return (int)spi->DR;
+    if (obj->bits == SPI_DATASIZE_8BIT) {
+        // Force 8-bit access to the data register
+        uint8_t *p_spi_dr = 0;
+        p_spi_dr = (uint8_t *) & (spi->DR);
+        return (int)(*p_spi_dr);
+    } else {
+        return (int)spi->DR;
+    }
 }
 
 void spi_slave_write(spi_t *obj, int value)
 {
     SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi);
     while (!ssp_writeable(obj));
-    spi->DR = (uint16_t)value;
+    if (obj->bits == SPI_DATASIZE_8BIT) {
+        // Force 8-bit access to the data register
+        uint8_t *p_spi_dr = 0;
+        p_spi_dr = (uint8_t *) & (spi->DR);
+        *p_spi_dr = (uint8_t)value;
+    } else { // SPI_DATASIZE_16BIT
+        spi->DR = (uint16_t)value;
+    }
 }
 
 int spi_busy(spi_t *obj)
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/i2c_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/i2c_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -82,6 +82,7 @@
         pin_mode(sda, OpenDrain);
         pin_mode(scl, OpenDrain);
     }
+
     // Enable I2C2 clock and pinout if not done
     if ((obj->i2c == I2C_2) && !i2c2_inited) {
         i2c2_inited = 1;
@@ -178,7 +179,7 @@
     int count;
     int value;
 
-    /* update CR2 register */
+    // Update CR2 register
     i2c->CR2 = (i2c->CR2 & (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_STOP)))
                | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_READ);
 
@@ -201,7 +202,7 @@
     // If not repeated start, send stop.
     if (stop) {
         i2c_stop(obj);
-        /* Wait until STOPF flag is set */
+        // Wait until STOPF flag is set
         timeout = FLAG_TIMEOUT;
         while (__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_STOPF) == RESET) {
             timeout--;
@@ -209,7 +210,7 @@
                 return -1;
             }
         }
-        /* Clear STOP Flag */
+        // Clear STOP Flag
         __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_STOPF);
     }
 
@@ -223,12 +224,10 @@
     int timeout;
     int count;
 
-    /* update CR2 register */
+    // Update CR2 register
     i2c->CR2 = (i2c->CR2 & (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_STOP)))
                | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_WRITE);
 
-
-
     for (count = 0; count < length; count++) {
         i2c_byte_write(obj, data[count]);
     }
@@ -243,10 +242,10 @@
     }
     __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_TC);
 
-    // If not repeated start, send stop.
+    // If not repeated start, send stop
     if (stop) {
         i2c_stop(obj);
-        /* Wait until STOPF flag is set */
+        // Wait until STOPF flag is set
         timeout = FLAG_TIMEOUT;
         while (__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_STOPF) == RESET) {
             timeout--;
@@ -254,7 +253,7 @@
                 return -1;
             }
         }
-        /* Clear STOP Flag */
+        // Clear STOP Flag
         __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_STOPF);
     }
 
@@ -299,7 +298,7 @@
 {
     int timeout;
 
-    // wait before reset
+    // Wait before reset
     timeout = LONG_TIMEOUT;
     while ((__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_BUSY)) && (timeout-- != 0));
 
@@ -336,7 +335,6 @@
 
 void i2c_slave_mode(i2c_t *obj, int enable_slave)
 {
-
     I2C_TypeDef *i2c = (I2C_TypeDef *)(obj->i2c);
     uint16_t tmpreg;
 
@@ -352,7 +350,6 @@
 
     // Set new mode
     i2c->OAR1 = tmpreg;
-
 }
 
 // See I2CSlave.h
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/rtc_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/rtc_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -59,8 +59,8 @@
 
     // Enable LSE Oscillator
     RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
-    RCC_OscInitStruct.PLL.PLLState   = RCC_PLL_NONE; /* Mandatory, otherwise the PLL is reconfigured! */
-    RCC_OscInitStruct.LSEState       = RCC_LSE_ON; /* External 32.768 kHz clock on OSC_IN/OSC_OUT */
+    RCC_OscInitStruct.PLL.PLLState   = RCC_PLL_NONE; // Mandatory, otherwise the PLL is reconfigured!
+    RCC_OscInitStruct.LSEState       = RCC_LSE_ON; // External 32.768 kHz clock on OSC_IN/OSC_OUT
     if (HAL_RCC_OscConfig(&RCC_OscInitStruct) == HAL_OK) {
         // Connect LSE to RTC
         __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE);
@@ -76,8 +76,8 @@
         }
         // Connect LSI to RTC
         __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSI);
-        // [TODO] This value is LSI typical value. To be measured precisely using a timer input capture.
-        rtc_freq = 32000;
+        // This value is LSI typical value. To be measured precisely using a timer input capture for example.
+        rtc_freq = LSI_VALUE;
     }
 
     // Enable RTC
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/serial_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/serial_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -113,6 +113,7 @@
         __USART1_CLK_ENABLE();
         obj->index = 0;
     }
+
     if (obj->uart == UART_2) {
         __USART2_CLK_ENABLE();
         obj->index = 1;
@@ -122,6 +123,7 @@
         __USART3_CLK_ENABLE();
         obj->index = 2;
     }
+
     if (obj->uart == UART_4) {
         __USART4_CLK_ENABLE();
         obj->index = 3;
@@ -163,16 +165,19 @@
         __USART1_RELEASE_RESET();
         __USART1_CLK_DISABLE();
     }
+
     if (obj->uart == UART_2) {
         __USART2_FORCE_RESET();
         __USART2_RELEASE_RESET();
         __USART2_CLK_DISABLE();
     }
+
     if (obj->uart == UART_3) {
         __USART3_FORCE_RESET();
         __USART3_RELEASE_RESET();
         __USART3_CLK_DISABLE();
     }
+
     if (obj->uart == UART_4) {
         __USART4_FORCE_RESET();
         __USART4_RELEASE_RESET();
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/spi_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/spi_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -158,7 +158,7 @@
         __SPI2_CLK_DISABLE();
     }
 
-    // Configure GPIO
+    // Configure GPIOs
     pin_function(obj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
     pin_function(obj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
     pin_function(obj->pin_sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
@@ -224,6 +224,7 @@
     } else { // >= 24000000
         obj->br_presc = SPI_BAUDRATEPRESCALER_2; // 24 MHz
     }
+
     init_spi(obj);
 }
 
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/us_ticker.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/us_ticker.c	Fri Nov 14 10:15:07 2014 +0000
@@ -51,7 +51,7 @@
     // Configure time base
     TimMasterHandle.Instance = TIM_MST;
     TimMasterHandle.Init.Period            = 0xFFFFFFFF;
-    TimMasterHandle.Init.Prescaler         = (uint32_t)(SystemCoreClock / 1000000) - 1; // 1 �s tick
+    TimMasterHandle.Init.Prescaler         = (uint32_t)(SystemCoreClock / 1000000) - 1; // 1 us tick
     TimMasterHandle.Init.ClockDivision     = 0;
     TimMasterHandle.Init.CounterMode       = TIM_COUNTERMODE_UP;
     TimMasterHandle.Init.RepetitionCounter = 0;
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F091RC/PinNames.h	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F091RC/PinNames.h	Fri Nov 14 10:15:07 2014 +0000
@@ -36,12 +36,11 @@
 extern "C" {
 #endif
 
+// See stm32f0xx_hal_gpio.h and stm32f0xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
 #define STM_PIN_DATA(MODE, PUPD, AFNUM)  ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
-
 #define STM_PIN_MODE(X)   (((X) >> 0) & 0x0F)
 #define STM_PIN_PUPD(X)   (((X) >> 4) & 0x07)
 #define STM_PIN_AFNUM(X)  (((X) >> 7) & 0x0F)
-
 #define STM_MODE_INPUT              (0)
 #define STM_MODE_OUTPUT_PP          (1)
 #define STM_MODE_OUTPUT_OD          (2)
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/pwmout_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/pwmout_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -44,8 +44,8 @@
     {PA_3,  PWM_15, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM15)}, // TIM15_CH2
 //  {PA_5,  PWM_2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH1
     {PA_6,  PWM_16, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16)}, // TIM16_CH1
-    {PA_7,  PWM_17, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17)}, // TIM17_CH1
-//  {PA_7,  PWM_1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1)},  // TIM1_CH1N
+    {PA_7,  PWM_17, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17)}, // TIM17_CH1 - ARDUINO
+//  {PA_7,  PWM_1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1)},  // TIM1_CH1N - ARDUINO
     {PA_8,  PWM_1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1)},  // TIM1_CH1
     {PA_9,  PWM_1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1)},  // TIM1_CH2
 //  {PA_9,  PWM_2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM2)}, // TIM2_CH3
@@ -60,14 +60,14 @@
 
     {PB_0,  PWM_1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1)},  // TIM1_CH2N
     {PB_1,  PWM_1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1)},  // TIM1_CH3N
-//  {PB_3,  PWM_2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH2
-    {PB_4,  PWM_16, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16)}, // TIM16_CH1
+//  {PB_3,  PWM_2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH2 - ARDUINO --> USED BY TIMER
+    {PB_4,  PWM_16, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16)}, // TIM16_CH1 - ARDUINO
     {PB_5,  PWM_17, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM17)},// TIM17_CH1
-    {PB_6,  PWM_16, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16)}, // TIM16_CH1N
+    {PB_6,  PWM_16, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16)}, // TIM16_CH1N - ARDUINO
     {PB_7,  PWM_17, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17)}, // TIM17_CH1N
     {PB_8,  PWM_16, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16)}, // TIM16_CH1
     {PB_9,  PWM_17, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17)}, // TIM17_CH1
-//  {PB_10, PWM_2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH3
+//  {PB_10, PWM_2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH3 - ARDUINO --> USED BY TIMER
 //  {PB_11, PWM_2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH4
     {PB_13, PWM_1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1)},  // TIM1_CH1N
     {PB_14, PWM_15, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM15)}, // TIM15_CH1
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/spi_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/spi_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -111,6 +111,7 @@
     if (obj->spi == SPI_2) {
         __SPI2_CLK_ENABLE();
     }
+
     if (obj->spi == SPI_3) {
         __SPI3_CLK_ENABLE();
     }
@@ -151,6 +152,7 @@
         __SPI2_RELEASE_RESET();
         __SPI2_CLK_DISABLE();
     }
+
     if (obj->spi == SPI_3) {
         __SPI3_FORCE_RESET();
         __SPI3_RELEASE_RESET();
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogin_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogin_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -35,16 +35,16 @@
 #include "pinmap.h"
 
 static const PinMap PinMap_ADC[] = {
-    {PA_0,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN1 - ARDUINO
-    {PA_1,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN2 - ARDUINO
+    {PA_0,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN1 - ARDUINO A0
+    {PA_1,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN2 - ARDUINO A1
     {PA_2,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN3
     {PA_3,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN4
-    {PA_4,  ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN1 - ARDUINO
+    {PA_4,  ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN1 - ARDUINO A2
     {PA_5,  ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN2
     {PA_6,  ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN3
     {PA_7,  ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN4
 
-    {PB_0,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN11 - ARDUINO
+    {PB_0,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN11 - ARDUINO A3
     {PB_1,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN12
     {PB_2,  ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN12
     {PB_12, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN13
@@ -52,8 +52,8 @@
     {PB_14, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN14
     {PB_15, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN15
 
-    {PC_0,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN6 - ARDUINO
-    {PC_1,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN7 - ARDUINO
+    {PC_0,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN6 - ARDUINO A5
+    {PC_1,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN7 - ARDUINO A4
     {PC_2,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN8
     {PC_3,  ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN9
     {PC_4,  ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN5
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogout_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogout_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -67,6 +67,7 @@
     if (obj->dac == DAC_1) {
         __DAC1_CLK_ENABLE();
     }
+
     if (obj->dac == DAC_2) {
         __DAC2_CLK_ENABLE();
     }
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/i2c_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/i2c_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -68,7 +68,7 @@
     obj->i2c = (I2CName)pinmap_merge(i2c_sda, i2c_scl);
     MBED_ASSERT(obj->i2c != (I2CName)NC);
 
-    // Enable I2C1 clock and pinout if not done
+    // Enable I2C clock and pinout if not done
     if ((obj->i2c == I2C_1) && !i2c1_inited) {
         i2c1_inited = 1;
         __HAL_RCC_I2C1_CONFIG(RCC_I2C1CLKSOURCE_SYSCLK);
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/spi_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/spi_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -111,7 +111,7 @@
     obj->bits = SPI_DATASIZE_8BIT;
     obj->cpol = SPI_POLARITY_LOW;
     obj->cpha = SPI_PHASE_1EDGE;
-    obj->br_presc = SPI_BAUDRATEPRESCALER_256;
+    obj->br_presc = SPI_BAUDRATEPRESCALER_64; // 1 MHz (HSI) or 1.13 MHz (HSE)
 
     obj->pin_miso = miso;
     obj->pin_mosi = mosi;
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_irq_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_irq_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -253,7 +253,6 @@
             mode = STM_MODE_IT_EVT_RESET;
             obj->event = EDGE_NONE;
         }
-
     }
 
     pin_function(obj->pin, STM_PIN_DATA(mode, pull, 0));
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/i2c_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/i2c_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -45,7 +45,7 @@
     {PB_3,  I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C2)},
     {PB_4,  I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C3)},
     {PB_7,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
-    {PB_9,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
+    {PB_9,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // ARDUINO
     {PC_9,  I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
     {NC,    NC,    0}
 };
@@ -53,7 +53,7 @@
 static const PinMap PinMap_I2C_SCL[] = {
     {PA_8,  I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
     {PB_6,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
-    {PB_8,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
+    {PB_8,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // ARDUINO
     {PB_10, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
     {NC,    NC,    0}
 };
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/pwmout_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/pwmout_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -49,8 +49,8 @@
 //  {PA_3,  PWM_9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9)}, // TIM9_CH2
     {PA_5,  PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH1
     {PA_6,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH1
-    {PA_7,  PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH1N
-//  {PA_7,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2
+    {PA_7,  PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH1N - ARDUINO
+//  {PA_7,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2 - ARDUINO
     {PA_8,  PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH1
     {PA_9,  PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH2
     {PA_10, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH3
@@ -61,22 +61,22 @@
 //  {PB_0,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH3
     {PB_1,  PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)},  // TIM1_CH3N
 //  {PB_1,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH4
-    {PB_3,  PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH2
-    {PB_4,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH1
+    {PB_3,  PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH2 - ARDUINO
+    {PB_4,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH1 - ARDUINO
     {PB_5,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH2
-    {PB_6,  PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)},  // TIM4_CH1
+    {PB_6,  PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)},  // TIM4_CH1 - ARDUINO
     {PB_7,  PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)},  // TIM4_CH2
     {PB_8,  PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)},  // TIM4_CH3
 //  {PB_8,  PWM_10,STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10)}, // TIM10_CH1
     {PB_9,  PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)},  // TIM4_CH4
 //  {PB_9,  PWM_11,STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11)}, // TIM11_CH1
-    {PB_10, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH3
+    {PB_10, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)},  // TIM2_CH3 - ARDUINO
     {PB_13, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)},  // TIM1_CH1N
     {PB_14, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)},  // TIM1_CH2N
     {PB_15, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)},  // TIM1_CH3N
 
     {PC_6,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH1
-    {PC_7,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH2
+    {PC_7,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH2 - ARDUINO
     {PC_8,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH3
     {PC_9,  PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)},  // TIM3_CH4
 
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/rtc_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/rtc_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -79,7 +79,7 @@
         __HAL_RCC_RTC_CLKPRESCALER(RCC_RTCCLKSOURCE_LSI);
         __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSI);
         // [TODO] This value is LSI typical value. To be measured precisely using a timer input capture
-        rtc_freq = 32000;
+        rtc_freq = LSI_VALUE;
     }
 
     // Enable RTC
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/serial_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/serial_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -136,7 +136,6 @@
         stdio_uart_inited = 1;
         memcpy(&stdio_uart, obj, sizeof(serial_t));
     }
-
 }
 
 void serial_free(serial_t *obj)
@@ -225,10 +224,12 @@
 {
     uart_irq(UART_1, 0);
 }
+
 static void uart2_irq(void)
 {
     uart_irq(UART_2, 1);
 }
+
 static void uart6_irq(void)
 {
     uart_irq(UART_6, 2);
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/spi_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/spi_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -37,7 +37,7 @@
 #include "pinmap.h"
 
 static const PinMap PinMap_SPI_MOSI[] = {
-    {PA_7,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
+    {PA_7,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // ARDUINO
     {PB_5,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 //  {PB_5,  SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
     {PB_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
@@ -47,7 +47,7 @@
 };
 
 static const PinMap PinMap_SPI_MISO[] = {
-    {PA_6,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
+    {PA_6,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // ARDUINO
     {PB_4,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 //  {PB_4,  SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
     {PB_14, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
@@ -57,7 +57,7 @@
 };
 
 static const PinMap PinMap_SPI_SCLK[] = {
-    {PA_5,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
+    {PA_5,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // ARDUINO
     {PB_3,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 //  {PB_3,  SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
     {PB_10, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
@@ -119,9 +119,11 @@
     if (obj->spi == SPI_1) {
         __SPI1_CLK_ENABLE();
     }
+
     if (obj->spi == SPI_2) {
         __SPI2_CLK_ENABLE();
     }
+
     if (obj->spi == SPI_3) {
         __SPI3_CLK_ENABLE();
     }
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F411RE/spi_api.c	Fri Nov 14 09:15:08 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F411RE/spi_api.c	Fri Nov 14 10:15:07 2014 +0000
@@ -130,15 +130,19 @@
     if (obj->spi == SPI_1) {
         __SPI1_CLK_ENABLE();
     }
+
     if (obj->spi == SPI_2) {
         __SPI2_CLK_ENABLE();
     }
+
     if (obj->spi == SPI_3) {
         __SPI3_CLK_ENABLE();
     }
+
     if (obj->spi == SPI_4) {
         __SPI4_CLK_ENABLE();
     }
+
     if (obj->spi == SPI_5) {
         __SPI5_CLK_ENABLE();
     }
@@ -179,21 +183,25 @@
         __SPI1_RELEASE_RESET();
         __SPI1_CLK_DISABLE();
     }
+
     if (obj->spi == SPI_2) {
         __SPI2_FORCE_RESET();
         __SPI2_RELEASE_RESET();
         __SPI2_CLK_DISABLE();
     }
+
     if (obj->spi == SPI_3) {
         __SPI3_FORCE_RESET();
         __SPI3_RELEASE_RESET();
         __SPI3_CLK_DISABLE();
     }
+
     if (obj->spi == SPI_4) {
         __SPI4_FORCE_RESET();
         __SPI4_RELEASE_RESET();
         __SPI4_CLK_DISABLE();
     }
+
     if (obj->spi == SPI_5) {
         __SPI5_FORCE_RESET();
         __SPI5_RELEASE_RESET();