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:
6:e35173aca75e
Parent:
1:0bf5385bbf21
Child:
7:09d8c2eacb4d
--- a/PinNames.h	Tue Aug 02 19:37:40 2016 +0000
+++ b/PinNames.h	Sun Oct 09 09:25:19 2016 +0000
@@ -26,9 +26,6 @@
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************
- *
- * Modified for STM32F103C6T8 by Zoltan Hudak, 2016
- *
  */
 #ifndef MBED_PINNAMES_H
 #define MBED_PINNAMES_H
@@ -39,11 +36,22 @@
 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_DATA(MODE, PUPD, AFNUM)  ((int)(((MODE  & 0x0F) << 0) |\
+                                                ((PUPD  & 0x07) << 4) |\
+                                                ((AFNUM & 0x0F) << 7)))
+
+#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED)  ((int)(((MODE     & 0x0F) <<  0) |\
+                                                                       ((PUPD     & 0x07) <<  4) |\
+                                                                       ((AFNUM    & 0x0F) <<  7) |\
+                                                                       ((CHANNEL  & 0x0F) << 11) |\
+                                                                       ((INVERTED & 0x01) << 15)))
+
 #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_PIN_CHANNEL(X)  (((X) >> 11) & 0x0F)
+#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
+
 #define STM_MODE_INPUT              (0)
 #define STM_MODE_OUTPUT_PP          (1)
 #define STM_MODE_OUTPUT_OD          (2)
@@ -69,6 +77,10 @@
 } PinDirection;
 
 typedef enum {
+    // Not connected
+    NC = (int)0xFFFFFFFF,
+    
+    // Ports
     PA_0  = 0x00,
     PA_1  = 0x01,
     PA_2  = 0x02,
@@ -82,10 +94,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 +115,32 @@
     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,
 
     // 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 +150,7 @@
     D6          = PB_10,
     D7          = PA_8,
     D8          = PA_9,
+    D9          = NC,
     D10         = PB_6,
     D11         = PA_7,
     D12         = PA_6,
@@ -128,6 +160,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,10 +174,7 @@
     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 {