mbed support for STM32F103C8T6 (Blue Pill) boards

Dependents:   STM32F103C8T6_nRF24L01P_Hello_World Serial_over_Ethernet STM32F103C8T6_LoRaWAN-lmic-app STM32F103C8T6_WebUSBDFU ... more

Demo program and additional info:

Import programSTM32F103C8T6_Hello

Using low cost Bluepill (STM32F103C8T6) boards with mbed.

Revision:
8:2582ee8cc84c
Parent:
1:0bf5385bbf21
Child:
9:0340d6204caf
--- a/PinNames.h	Tue Aug 02 19:37:40 2016 +0000
+++ b/PinNames.h	Sat May 27 09:31:15 2017 +0000
@@ -27,48 +27,24 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************
  *
- * Modified for STM32F103C6T8 by Zoltan Hudak, 2016
+ * Modified by Zoltan Hudak 2017
  *
  */
 #ifndef MBED_PINNAMES_H
 #define MBED_PINNAMES_H
 
 #include "cmsis.h"
+#include "PinNamesTypes.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-// See stm32f3xx_hal_gpio.h and stm32f3xx_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)
-#define STM_MODE_AF_PP              (3)
-#define STM_MODE_AF_OD              (4)
-#define STM_MODE_ANALOG             (5)
-#define STM_MODE_IT_RISING          (6)
-#define STM_MODE_IT_FALLING         (7)
-#define STM_MODE_IT_RISING_FALLING  (8)
-#define STM_MODE_EVT_RISING         (9)
-#define STM_MODE_EVT_FALLING        (10)
-#define STM_MODE_EVT_RISING_FALLING (11)
-#define STM_MODE_IT_EVT_RESET       (12)
+typedef enum {
+    // Not connected
+    NC = (int)0xFFFFFFFF,
 
-// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H)
-// Low nibble  = pin number
-#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF)
-#define STM_PIN(X)  ((uint32_t)(X) & 0xF)
-
-typedef enum {
-    PIN_INPUT,
-    PIN_OUTPUT
-} PinDirection;
-
-typedef enum {
+    // Ports
     PA_0  = 0x00,
     PA_1  = 0x01,
     PA_2  = 0x02,
@@ -82,10 +58,13 @@
     PA_10 = 0x0A,
     PA_11 = 0x0B,
     PA_12 = 0x0C,
+    PA_13 = NC,
+    PA_14 = NC,
     PA_15 = 0x0F,
 
     PB_0  = 0x10,
     PB_1  = 0x11,
+    PB_2  = NC,
     PB_3  = 0x13,
     PB_4  = 0x14,
     PB_5  = 0x15,
@@ -100,16 +79,36 @@
     PB_14 = 0x1E,
     PB_15 = 0x1F,
 
+    PC_0  = NC,
+    PC_1  = NC,
+    PC_2  = NC,
+    PC_3  = NC,
+    PC_4  = NC,
+    PC_5  = NC,
+    PC_6  = NC,
+    PC_7  = NC,
+    PC_8  = NC,
+    PC_9  = NC,
+    PC_10 = NC,
+    PC_11 = NC,
+    PC_12 = NC,
     PC_13 = 0x2D,
     PC_14 = 0x2E,
     PC_15 = 0x2F,
 
+    PD_2  = NC,
+
+    // ADC internal channels
+    ADC_TEMP = 0xF0,
+    ADC_VREF = 0xF1,
 
     // Arduino connector namings
     A0          = PA_0,
     A1          = PA_1,
     A2          = PA_4,
     A3          = PB_0,
+    A4          = NC,
+    A5          = NC,
     D0          = PA_3,
     D1          = PA_2,
     D2          = PA_10,
@@ -119,6 +118,7 @@
     D6          = PB_10,
     D7          = PA_8,
     D8          = PA_9,
+    D9          = NC,
     D10         = PB_6,
     D11         = PA_7,
     D12         = PA_6,
@@ -128,6 +128,10 @@
 
     // Generic signals namings
     LED1        = PC_13,
+    LED2        = NC,
+    LED3        = NC,
+    LED4        = NC,
+    USER_BUTTON = NC,
     SERIAL_TX   = PA_2,
     SERIAL_RX   = PA_3,
     USBTX       = PA_2,
@@ -138,22 +142,13 @@
     SPI_MISO    = PA_6,
     SPI_SCK     = PA_5,
     SPI_CS      = PB_6,
-    PWM_OUT     = PB_3,
-
-    // Not connected
-    NC = (int)0xFFFFFFFF
+    PWM_OUT     = PB_3
 } PinName;
 
-typedef enum {
-    PullNone  = 0,
-    PullUp    = 1,
-    PullDown  = 2,
-    OpenDrain = 3,
-    PullDefault = PullNone
-} PinMode;
-
 #ifdef __cplusplus
 }
 #endif
 
 #endif
+
+