Bluepill STM32F103C8 support for Mbed OS 6

Bluepill board support for Mbed OS 6

Warning

It does not work with the Mbed Online Compiler.

This is an example of configuration for the Bluepill board for Mbed OS 6.

It shows how to create a custom board support based on Mbed OS and how to compile a simple Blinky application.

Note this project makes use of the full Mbed OS with RTOS included. It's possible to make changes in the configuration to support the Baremetal profile and reduce memory requirements - see this.

Example application

This repository includes blinky.cpp as an example application to demonstrate how to use the Bluepill custom board support. It's expected to work out of the box using both Mbed CLI and Mbed Studio. Note this test application can be ignored using the MBED_BLINKY_EXAMPLE macro in mbed_app.json, so you can add your own files and application on top of this project.

You can follow these steps to import and compile with Mbed CLI:

mbed import https://os.mbed.com/users/hudakz/code/mbed-os-bluepill
mbed compile -t GCC_ARM -m bluepill

Bluepill and Mbed OS version support

BluepillMbed OS (hash)Status
preview6.2.0 (#a2ada74770 )Compiles and runs ok

Updating Mbed OS

Note not every version of Mbed OS is being tested, therefore update at your own risk. Unless strictly required, you should stick to versions of Mbed OS that are known to work ok.

If you do want to udpate Mbed OS, then follow these steps:

cd mbed-os
mbed update <mbed-os hash / tag>

Testing

This application has been tested on the Bluepill board and runs ok: it blinks and LED and sends a message over the serial port (115200 bauds - see mbed_app.json).

However, it's recomended to run regression tests based on the Greentea framework whether possible (more details to be added).

Programming with STLink programming utility

The Bluepill board doesn't have a programming interface on board. However, it's easy to connect an external adapter such as the STLink/V2 and get it working in minutes.

Use the STM32 ST-Link utility to program the binary into the device.

https://os.mbed.com/media/uploads/hudakz/stlink-prog.png

Wire the Bluepill to the STLink and serial adapter as follow:

BluepillSTLink (20-pin JTAG)Serial adapter
SDWIO (CN4)7-
SWCLK (CN4)9-
RESET15-
GND4GND
TX (PA_2)-RX
RX (PA_3)-TX

ST-LINK/V2 JTAG pintout
https://os.mbed.com/media/uploads/hudakz/jtag_pinout.png

This is the pinout of the Bluepill board: /media/uploads/hudakz/stm32f103c8t6_pinout_voltage01.png

https://os.mbed.com/media/uploads/hudakz/connections.jpg

Additional example programs

Bare metal on Bluepill
Bare metal with EventQueue on Bluepill

Warning

The examples above are not meant to be compiled with the online compiler. Follow these steps to import and compile them with Mbed CLI:

mbed import Program's_URL
mbed compile -t GCC_ARM -m bluepill

Known issues

  • Please check the issues reported.
Committer:
hudakz
Date:
Fri Jan 08 22:21:27 2021 +0000
Revision:
10:fc04048e7188
Parent:
9:eb0ca18f5777
Added USB support.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:2577a4fb6e72 1 /* mbed Microcontroller Library
hudakz 0:2577a4fb6e72 2 *******************************************************************************
hudakz 0:2577a4fb6e72 3 * Copyright (c) 2018, STMicroelectronics
hudakz 0:2577a4fb6e72 4 * All rights reserved.
hudakz 0:2577a4fb6e72 5 *
hudakz 0:2577a4fb6e72 6 * Redistribution and use in source and binary forms, with or without
hudakz 0:2577a4fb6e72 7 * modification, are permitted provided that the following conditions are met:
hudakz 0:2577a4fb6e72 8 *
hudakz 0:2577a4fb6e72 9 * 1. Redistributions of source code must retain the above copyright notice,
hudakz 0:2577a4fb6e72 10 * this list of conditions and the following disclaimer.
hudakz 0:2577a4fb6e72 11 * 2. Redistributions in binary form must reproduce the above copyright notice,
hudakz 0:2577a4fb6e72 12 * this list of conditions and the following disclaimer in the documentation
hudakz 0:2577a4fb6e72 13 * and/or other materials provided with the distribution.
hudakz 0:2577a4fb6e72 14 * 3. Neither the name of STMicroelectronics nor the names of its contributors
hudakz 0:2577a4fb6e72 15 * may be used to endorse or promote products derived from this software
hudakz 0:2577a4fb6e72 16 * without specific prior written permission.
hudakz 0:2577a4fb6e72 17 *
hudakz 0:2577a4fb6e72 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
hudakz 0:2577a4fb6e72 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
hudakz 0:2577a4fb6e72 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
hudakz 0:2577a4fb6e72 21 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
hudakz 0:2577a4fb6e72 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
hudakz 0:2577a4fb6e72 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
hudakz 0:2577a4fb6e72 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
hudakz 0:2577a4fb6e72 25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
hudakz 0:2577a4fb6e72 26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
hudakz 0:2577a4fb6e72 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
hudakz 0:2577a4fb6e72 28 *******************************************************************************
hudakz 0:2577a4fb6e72 29 *
hudakz 0:2577a4fb6e72 30 * Automatically generated from STM32F103C(8-B)Tx.xml
hudakz 0:2577a4fb6e72 31 */
hudakz 0:2577a4fb6e72 32
hudakz 0:2577a4fb6e72 33 #include "PeripheralPins.h"
hudakz 0:2577a4fb6e72 34 #include "mbed_toolchain.h"
hudakz 0:2577a4fb6e72 35
hudakz 0:2577a4fb6e72 36 //==============================================================================
hudakz 0:2577a4fb6e72 37 // Notes
hudakz 0:2577a4fb6e72 38 //
hudakz 0:2577a4fb6e72 39 // - The pins mentioned Px_y_ALTz are alternative possibilities which use other
hudakz 0:2577a4fb6e72 40 // HW peripheral instances. You can use them the same way as any other "normal"
hudakz 0:2577a4fb6e72 41 // pin (i.e. PwmOut pwm(PA_7_ALT0);). These pins are not displayed on the board
hudakz 0:2577a4fb6e72 42 // pinout image on mbed.org.
hudakz 0:2577a4fb6e72 43 //
hudakz 0:2577a4fb6e72 44 // - The pins which are connected to other components present on the board have
hudakz 0:2577a4fb6e72 45 // the comment "Connected to xxx". The pin function may not work properly in this
hudakz 0:2577a4fb6e72 46 // case. These pins may not be displayed on the board pinout image on mbed.org.
hudakz 0:2577a4fb6e72 47 // Please read the board reference manual and schematic for more information.
hudakz 0:2577a4fb6e72 48 //
hudakz 0:2577a4fb6e72 49 // - Warning: pins connected to the default STDIO_UART_TX and STDIO_UART_RX pins are commented
hudakz 0:2577a4fb6e72 50 // See https://os.mbed.com/teams/ST/wiki/STDIO for more information.
hudakz 0:2577a4fb6e72 51 //
hudakz 0:2577a4fb6e72 52 //==============================================================================
hudakz 0:2577a4fb6e72 53
hudakz 0:2577a4fb6e72 54
hudakz 0:2577a4fb6e72 55 //*** ADC ***
hudakz 0:2577a4fb6e72 56
hudakz 0:2577a4fb6e72 57 MBED_WEAK const PinMap PinMap_ADC[] = {
hudakz 0:2577a4fb6e72 58 {PA_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC_IN0
hudakz 0:2577a4fb6e72 59 {PA_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC_IN1
hudakz 0:2577a4fb6e72 60 {PA_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC_IN2
hudakz 0:2577a4fb6e72 61 {PA_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC_IN3
hudakz 0:2577a4fb6e72 62 {PA_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC_IN4
hudakz 0:2577a4fb6e72 63 {PA_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC_IN5
hudakz 0:2577a4fb6e72 64 {PA_6, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC_IN6
hudakz 0:2577a4fb6e72 65 {PA_7, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC_IN7
hudakz 0:2577a4fb6e72 66 {PB_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC_IN8
hudakz 0:2577a4fb6e72 67 {PB_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC_IN9
hudakz 0:2577a4fb6e72 68 {PC_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC_IN10
hudakz 0:2577a4fb6e72 69 {PC_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC_IN11
hudakz 0:2577a4fb6e72 70 {PC_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC_IN12
hudakz 0:2577a4fb6e72 71 {PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC_IN13
hudakz 0:2577a4fb6e72 72 {PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC_IN14
hudakz 0:2577a4fb6e72 73 {PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC_IN15
hudakz 0:2577a4fb6e72 74 {NC, NC, 0}
hudakz 0:2577a4fb6e72 75 };
hudakz 0:2577a4fb6e72 76
hudakz 0:2577a4fb6e72 77 const PinMap PinMap_ADC_Internal[] = {
hudakz 0:2577a4fb6e72 78 {ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC_IN16
hudakz 0:2577a4fb6e72 79 {ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC_IN17
hudakz 0:2577a4fb6e72 80 {NC, NC, 0}
hudakz 0:2577a4fb6e72 81 };
hudakz 0:2577a4fb6e72 82
hudakz 0:2577a4fb6e72 83 //*** I2C ***
hudakz 0:2577a4fb6e72 84
hudakz 0:2577a4fb6e72 85 MBED_WEAK const PinMap PinMap_I2C_SDA[] = {
hudakz 0:2577a4fb6e72 86 {PB_7, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 87 {PB_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, 2)},
hudakz 0:2577a4fb6e72 88 {PB_11, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 89 {NC, NC, 0}
hudakz 0:2577a4fb6e72 90 };
hudakz 0:2577a4fb6e72 91
hudakz 0:2577a4fb6e72 92 MBED_WEAK const PinMap PinMap_I2C_SCL[] = {
hudakz 0:2577a4fb6e72 93 {PB_6, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 94 {PB_8, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, 2)},
hudakz 0:2577a4fb6e72 95 {PB_10, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 96 {NC, NC, 0}
hudakz 0:2577a4fb6e72 97 };
hudakz 0:2577a4fb6e72 98
hudakz 0:2577a4fb6e72 99 //*** PWM ***
hudakz 0:2577a4fb6e72 100
hudakz 0:2577a4fb6e72 101 // TIM4 cannot be used because already used by the us_ticker
hudakz 0:2577a4fb6e72 102 // You have to comment all PWM_4
hudakz 0:2577a4fb6e72 103 MBED_WEAK const PinMap PinMap_PWM[] = {
hudakz 0:2577a4fb6e72 104 {PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 1, 0)}, // TIM2_CH1
hudakz 0:2577a4fb6e72 105 {PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 2, 0)}, // TIM2_CH2
hudakz 0:2577a4fb6e72 106 {PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 3, 0)}, // TIM2_CH3
hudakz 0:2577a4fb6e72 107 {PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 4, 0)}, // TIM2_CH4
hudakz 0:2577a4fb6e72 108 {PA_6, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 1, 0)}, // TIM3_CH1
hudakz 0:2577a4fb6e72 109 {PA_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 2, 0)}, // TIM3_CH2
hudakz 0:2577a4fb6e72 110 {PA_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 1, 0)}, // TIM1_CH1
hudakz 0:2577a4fb6e72 111 {PA_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 6, 1, 0)}, // TIM1_CH1
hudakz 0:2577a4fb6e72 112 {PA_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 2, 0)}, // TIM1_CH2
hudakz 0:2577a4fb6e72 113 {PA_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 6, 2, 0)}, // TIM1_CH2
hudakz 0:2577a4fb6e72 114 {PA_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 3, 0)}, // TIM1_CH3
hudakz 0:2577a4fb6e72 115 {PA_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 6, 3, 0)}, // TIM1_CH3
hudakz 0:2577a4fb6e72 116 {PA_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 4, 0)}, // TIM1_CH4
hudakz 0:2577a4fb6e72 117 {PA_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 6, 4, 0)}, // TIM1_CH4
hudakz 0:2577a4fb6e72 118 {PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 8, 1, 0)}, // TIM2_CH1
hudakz 0:2577a4fb6e72 119 {PB_0, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 6, 2, 1)}, // TIM1_CH2N
hudakz 0:2577a4fb6e72 120 {PB_0_ALT0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 3, 0)}, // TIM3_CH3
hudakz 0:2577a4fb6e72 121 {PB_0_ALT0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 7, 3, 0)}, // TIM3_CH3
hudakz 0:2577a4fb6e72 122 {PB_1, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 6, 3, 1)}, // TIM1_CH3N
hudakz 0:2577a4fb6e72 123 {PB_1_ALT0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 4, 0)}, // TIM3_CH4
hudakz 0:2577a4fb6e72 124 {PB_1_ALT0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 7, 4, 0)}, // TIM3_CH4
hudakz 0:2577a4fb6e72 125 {PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 8, 2, 0)}, // TIM2_CH2
hudakz 0:2577a4fb6e72 126 {PB_4, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 7, 1, 0)}, // TIM3_CH1
hudakz 0:2577a4fb6e72 127 {PB_5, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 7, 2, 0)}, // TIM3_CH2
hudakz 0:2577a4fb6e72 128 // {PB_6, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 1, 0)}, // TIM4_CH1
hudakz 0:2577a4fb6e72 129 // {PB_7, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 2, 0)}, // TIM4_CH2
hudakz 0:2577a4fb6e72 130 // {PB_8, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 3, 0)}, // TIM4_CH3
hudakz 0:2577a4fb6e72 131 // {PB_9, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 4, 0)}, // TIM4_CH4
hudakz 0:2577a4fb6e72 132 {PB_10, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 8, 3, 0)}, // TIM2_CH3
hudakz 0:2577a4fb6e72 133 {PB_11, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 8, 4, 0)}, // TIM2_CH4
hudakz 0:2577a4fb6e72 134 {PB_13, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 1, 1)}, // TIM1_CH1N
hudakz 0:2577a4fb6e72 135 {PB_14, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 2, 1)}, // TIM1_CH2N
hudakz 0:2577a4fb6e72 136 {PB_15, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, 0, 3, 1)}, // TIM1_CH3N
hudakz 0:2577a4fb6e72 137 {NC, NC, 0}
hudakz 0:2577a4fb6e72 138 };
hudakz 0:2577a4fb6e72 139
hudakz 0:2577a4fb6e72 140 //*** SERIAL ***
hudakz 0:2577a4fb6e72 141
hudakz 0:2577a4fb6e72 142 MBED_WEAK const PinMap PinMap_UART_TX[] = {
hudakz 0:2577a4fb6e72 143 {PA_2, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 144 {PA_9, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 145 {PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 3)}, // GPIO_Remap_USART1
hudakz 0:2577a4fb6e72 146 {PB_10, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 147 {PC_10, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 5)}, // GPIO_PartialRemap_USART3
hudakz 0:2577a4fb6e72 148 {NC, NC, 0}
hudakz 0:2577a4fb6e72 149 };
hudakz 0:2577a4fb6e72 150
hudakz 0:2577a4fb6e72 151 MBED_WEAK const PinMap PinMap_UART_RX[] = {
hudakz 0:2577a4fb6e72 152 {PA_3, UART_2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 153 {PA_10, UART_1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 154 {PB_7, UART_1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, 3)}, // GPIO_Remap_USART1
hudakz 0:2577a4fb6e72 155 {PB_11, UART_3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 156 {PC_11, UART_3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, 5)}, // GPIO_PartialRemap_USART3
hudakz 0:2577a4fb6e72 157 {NC, NC, 0}
hudakz 0:2577a4fb6e72 158 };
hudakz 0:2577a4fb6e72 159
hudakz 0:2577a4fb6e72 160 MBED_WEAK const PinMap PinMap_UART_RTS[] = {
hudakz 0:2577a4fb6e72 161 {PA_1, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 162 {PA_12, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 163 {PB_14, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 164 {NC, NC, 0}
hudakz 0:2577a4fb6e72 165 };
hudakz 0:2577a4fb6e72 166
hudakz 0:2577a4fb6e72 167 MBED_WEAK const PinMap PinMap_UART_CTS[] = {
hudakz 0:2577a4fb6e72 168 {PA_0, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 169 {PA_11, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 170 {PB_13, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, 0)},
hudakz 0:2577a4fb6e72 171 {NC, NC, 0}
hudakz 0:2577a4fb6e72 172 };
hudakz 0:2577a4fb6e72 173
hudakz 0:2577a4fb6e72 174 //*** SPI ***
hudakz 0:2577a4fb6e72 175
hudakz 0:2577a4fb6e72 176 MBED_WEAK const PinMap PinMap_SPI_MOSI[] = {
hudakz 0:2577a4fb6e72 177 {PA_7, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 178 {PB_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 1)},
hudakz 0:2577a4fb6e72 179 {PB_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 180 {NC, NC, 0}
hudakz 0:2577a4fb6e72 181 };
hudakz 0:2577a4fb6e72 182
hudakz 0:2577a4fb6e72 183 MBED_WEAK const PinMap PinMap_SPI_MISO[] = {
hudakz 0:2577a4fb6e72 184 {PA_6, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 185 {PB_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 1)},
hudakz 0:2577a4fb6e72 186 {PB_14, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 187 {NC, NC, 0}
hudakz 0:2577a4fb6e72 188 };
hudakz 0:2577a4fb6e72 189
hudakz 0:2577a4fb6e72 190 MBED_WEAK const PinMap PinMap_SPI_SCLK[] = {
hudakz 0:2577a4fb6e72 191 {PA_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 192 {PB_3, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 1)},
hudakz 0:2577a4fb6e72 193 {PB_13, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 194 {NC, NC, 0}
hudakz 0:2577a4fb6e72 195 };
hudakz 0:2577a4fb6e72 196
hudakz 0:2577a4fb6e72 197 MBED_WEAK const PinMap PinMap_SPI_SSEL[] = {
hudakz 0:2577a4fb6e72 198 {PA_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 199 {PA_15, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 1)},
hudakz 0:2577a4fb6e72 200 {PB_12, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 201 {NC, NC, 0}
hudakz 0:2577a4fb6e72 202 };
hudakz 0:2577a4fb6e72 203
hudakz 0:2577a4fb6e72 204 //*** CAN ***
hudakz 0:2577a4fb6e72 205
hudakz 0:2577a4fb6e72 206 MBED_WEAK const PinMap PinMap_CAN_RD[] = {
hudakz 0:2577a4fb6e72 207 {PA_11, CAN_1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 208 {PB_8, CAN_1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 10)},
hudakz 0:2577a4fb6e72 209 {NC, NC, 0}
hudakz 0:2577a4fb6e72 210 };
hudakz 0:2577a4fb6e72 211
hudakz 0:2577a4fb6e72 212 MBED_WEAK const PinMap PinMap_CAN_TD[] = {
hudakz 0:2577a4fb6e72 213 {PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 0)},
hudakz 0:2577a4fb6e72 214 {PB_9, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, 10)},
hudakz 0:2577a4fb6e72 215 {NC, NC, 0}
hudakz 0:2577a4fb6e72 216 };
hudakz 6:661b2566f925 217
hudakz 10:fc04048e7188 218 //*** USBDEVICE ***
hudakz 10:fc04048e7188 219
hudakz 10:fc04048e7188 220 MBED_WEAK const PinMap PinMap_USB_FS[] = {
hudakz 10:fc04048e7188 221 {PA_11, USB_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)}, // USB_DM
hudakz 10:fc04048e7188 222 {PA_12, USB_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)}, // USB_DP
hudakz 10:fc04048e7188 223 {NC, NC, 0}
hudakz 10:fc04048e7188 224 };