Bare-metal configuration for a Bluepill board.

Warning

It does not work with the Mbed Online Compiler.

Follow these steps to import and compile them with Mbed CLI:

mbed import https://os.mbed.com/users/hudakz/code/Baremetal_Blinky_Bluepill
mbed compile -t GCC_ARM -m bluepill
Committer:
hudakz
Date:
Thu May 14 05:25:26 2020 +0000
Revision:
0:a04710facbb6
Bare-metal configuration for a Bluepill board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:a04710facbb6 1 /* mbed Microcontroller Library
hudakz 0:a04710facbb6 2 *******************************************************************************
hudakz 0:a04710facbb6 3 * Copyright (c) 2014, STMicroelectronics
hudakz 0:a04710facbb6 4 * All rights reserved.
hudakz 0:a04710facbb6 5 *
hudakz 0:a04710facbb6 6 * Redistribution and use in source and binary forms, with or without
hudakz 0:a04710facbb6 7 * modification, are permitted provided that the following conditions are met:
hudakz 0:a04710facbb6 8 *
hudakz 0:a04710facbb6 9 * 1. Redistributions of source code must retain the above copyright notice,
hudakz 0:a04710facbb6 10 * this list of conditions and the following disclaimer.
hudakz 0:a04710facbb6 11 * 2. Redistributions in binary form must reproduce the above copyright notice,
hudakz 0:a04710facbb6 12 * this list of conditions and the following disclaimer in the documentation
hudakz 0:a04710facbb6 13 * and/or other materials provided with the distribution.
hudakz 0:a04710facbb6 14 * 3. Neither the name of STMicroelectronics nor the names of its contributors
hudakz 0:a04710facbb6 15 * may be used to endorse or promote products derived from this software
hudakz 0:a04710facbb6 16 * without specific prior written permission.
hudakz 0:a04710facbb6 17 *
hudakz 0:a04710facbb6 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
hudakz 0:a04710facbb6 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
hudakz 0:a04710facbb6 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
hudakz 0:a04710facbb6 21 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
hudakz 0:a04710facbb6 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
hudakz 0:a04710facbb6 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
hudakz 0:a04710facbb6 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
hudakz 0:a04710facbb6 25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
hudakz 0:a04710facbb6 26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
hudakz 0:a04710facbb6 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
hudakz 0:a04710facbb6 28 *******************************************************************************
hudakz 0:a04710facbb6 29 */
hudakz 0:a04710facbb6 30 #ifndef MBED_PINNAMES_H
hudakz 0:a04710facbb6 31 #define MBED_PINNAMES_H
hudakz 0:a04710facbb6 32
hudakz 0:a04710facbb6 33 #include "cmsis.h"
hudakz 0:a04710facbb6 34 #include "PinNamesTypes.h"
hudakz 0:a04710facbb6 35
hudakz 0:a04710facbb6 36 #ifdef __cplusplus
hudakz 0:a04710facbb6 37 extern "C" {
hudakz 0:a04710facbb6 38 #endif
hudakz 0:a04710facbb6 39
hudakz 0:a04710facbb6 40 typedef enum {
hudakz 0:a04710facbb6 41 ALT0 = 0x100,
hudakz 0:a04710facbb6 42 ALT1 = 0x200,
hudakz 0:a04710facbb6 43 ALT2 = 0x300,
hudakz 0:a04710facbb6 44 ALT3 = 0x400
hudakz 0:a04710facbb6 45 } ALTx;
hudakz 0:a04710facbb6 46
hudakz 0:a04710facbb6 47 typedef enum {
hudakz 0:a04710facbb6 48 PA_0 = 0x00,
hudakz 0:a04710facbb6 49 PA_1 = 0x01,
hudakz 0:a04710facbb6 50 PA_2 = 0x02,
hudakz 0:a04710facbb6 51 PA_3 = 0x03,
hudakz 0:a04710facbb6 52 PA_4 = 0x04,
hudakz 0:a04710facbb6 53 PA_5 = 0x05,
hudakz 0:a04710facbb6 54 PA_6 = 0x06,
hudakz 0:a04710facbb6 55 PA_7 = 0x07,
hudakz 0:a04710facbb6 56 PA_7_ALT0 = 0x07 | ALT0,
hudakz 0:a04710facbb6 57 PA_8 = 0x08,
hudakz 0:a04710facbb6 58 PA_9 = 0x09,
hudakz 0:a04710facbb6 59 PA_10 = 0x0A,
hudakz 0:a04710facbb6 60 PA_11 = 0x0B,
hudakz 0:a04710facbb6 61 PA_12 = 0x0C,
hudakz 0:a04710facbb6 62 PA_13 = 0x0D,
hudakz 0:a04710facbb6 63 PA_14 = 0x0E,
hudakz 0:a04710facbb6 64 PA_15 = 0x0F,
hudakz 0:a04710facbb6 65
hudakz 0:a04710facbb6 66 PB_0 = 0x10,
hudakz 0:a04710facbb6 67 PB_0_ALT0 = 0x10 | ALT0,
hudakz 0:a04710facbb6 68 PB_1 = 0x11,
hudakz 0:a04710facbb6 69 PB_1_ALT0 = 0x11 | ALT0,
hudakz 0:a04710facbb6 70 PB_2 = 0x12,
hudakz 0:a04710facbb6 71 PB_3 = 0x13,
hudakz 0:a04710facbb6 72 PB_4 = 0x14,
hudakz 0:a04710facbb6 73 PB_5 = 0x15,
hudakz 0:a04710facbb6 74 PB_6 = 0x16,
hudakz 0:a04710facbb6 75 PB_7 = 0x17,
hudakz 0:a04710facbb6 76 PB_8 = 0x18,
hudakz 0:a04710facbb6 77 PB_9 = 0x19,
hudakz 0:a04710facbb6 78 PB_10 = 0x1A,
hudakz 0:a04710facbb6 79 PB_11 = 0x1B,
hudakz 0:a04710facbb6 80 PB_12 = 0x1C,
hudakz 0:a04710facbb6 81 PB_13 = 0x1D,
hudakz 0:a04710facbb6 82 PB_14 = 0x1E,
hudakz 0:a04710facbb6 83 PB_15 = 0x1F,
hudakz 0:a04710facbb6 84
hudakz 0:a04710facbb6 85 PC_0 = 0x20,
hudakz 0:a04710facbb6 86 PC_1 = 0x21,
hudakz 0:a04710facbb6 87 PC_2 = 0x22,
hudakz 0:a04710facbb6 88 PC_3 = 0x23,
hudakz 0:a04710facbb6 89 PC_4 = 0x24,
hudakz 0:a04710facbb6 90 PC_5 = 0x25,
hudakz 0:a04710facbb6 91 PC_6 = 0x26,
hudakz 0:a04710facbb6 92 PC_7 = 0x27,
hudakz 0:a04710facbb6 93 PC_8 = 0x28,
hudakz 0:a04710facbb6 94 PC_9 = 0x29,
hudakz 0:a04710facbb6 95 PC_10 = 0x2A,
hudakz 0:a04710facbb6 96 PC_11 = 0x2B,
hudakz 0:a04710facbb6 97 PC_12 = 0x2C,
hudakz 0:a04710facbb6 98 PC_13 = 0x2D,
hudakz 0:a04710facbb6 99 PC_14 = 0x2E,
hudakz 0:a04710facbb6 100 PC_15 = 0x2F,
hudakz 0:a04710facbb6 101
hudakz 0:a04710facbb6 102 PD_2 = 0x32,
hudakz 0:a04710facbb6 103
hudakz 0:a04710facbb6 104 // ADC internal channels
hudakz 0:a04710facbb6 105 ADC_TEMP = 0xF0,
hudakz 0:a04710facbb6 106 ADC_VREF = 0xF1,
hudakz 0:a04710facbb6 107
hudakz 0:a04710facbb6 108 // PCB printout
hudakz 0:a04710facbb6 109 A0 = PA_0,
hudakz 0:a04710facbb6 110 A1 = PA_1,
hudakz 0:a04710facbb6 111 A2 = PA_2,
hudakz 0:a04710facbb6 112 A3 = PA_3,
hudakz 0:a04710facbb6 113 A4 = PA_4,
hudakz 0:a04710facbb6 114 A5 = PA_5,
hudakz 0:a04710facbb6 115 A6 = PA_6,
hudakz 0:a04710facbb6 116 A7 = PA_7,
hudakz 0:a04710facbb6 117 A8 = PA_8,
hudakz 0:a04710facbb6 118 A9 = PA_9,
hudakz 0:a04710facbb6 119 A10 = PA_10,
hudakz 0:a04710facbb6 120 A11 = PA_11,
hudakz 0:a04710facbb6 121 A12 = PA_12,
hudakz 0:a04710facbb6 122 A15 = PA_15,
hudakz 0:a04710facbb6 123
hudakz 0:a04710facbb6 124 B0 = PB_0,
hudakz 0:a04710facbb6 125 B1 = PB_1,
hudakz 0:a04710facbb6 126 B2 = PB_2,
hudakz 0:a04710facbb6 127 B3 = PB_3,
hudakz 0:a04710facbb6 128 B4 = PB_4,
hudakz 0:a04710facbb6 129 B5 = PB_5,
hudakz 0:a04710facbb6 130 B6 = PB_6,
hudakz 0:a04710facbb6 131 B7 = PB_7,
hudakz 0:a04710facbb6 132 B8 = PB_8,
hudakz 0:a04710facbb6 133 B9 = PB_9,
hudakz 0:a04710facbb6 134 B10 = PB_10,
hudakz 0:a04710facbb6 135 B11 = PB_11,
hudakz 0:a04710facbb6 136 B12 = PB_12,
hudakz 0:a04710facbb6 137 B13 = PB_13,
hudakz 0:a04710facbb6 138 B14 = PB_14,
hudakz 0:a04710facbb6 139 B15 = PB_15,
hudakz 0:a04710facbb6 140
hudakz 0:a04710facbb6 141 C13 = PC_13,
hudakz 0:a04710facbb6 142 C14 = PC_14,
hudakz 0:a04710facbb6 143 C15 = PC_15,
hudakz 0:a04710facbb6 144
hudakz 0:a04710facbb6 145 // STDIO for console print
hudakz 0:a04710facbb6 146 #ifdef MBED_CONF_TARGET_STDIO_UART_TX
hudakz 0:a04710facbb6 147 STDIO_UART_TX = MBED_CONF_TARGET_STDIO_UART_TX,
hudakz 0:a04710facbb6 148 #else
hudakz 0:a04710facbb6 149 STDIO_UART_TX = PA_2,
hudakz 0:a04710facbb6 150 #endif
hudakz 0:a04710facbb6 151 #ifdef MBED_CONF_TARGET_STDIO_UART_RX
hudakz 0:a04710facbb6 152 STDIO_UART_RX = MBED_CONF_TARGET_STDIO_UART_RX,
hudakz 0:a04710facbb6 153 #else
hudakz 0:a04710facbb6 154 STDIO_UART_RX = PA_3,
hudakz 0:a04710facbb6 155 #endif
hudakz 0:a04710facbb6 156
hudakz 0:a04710facbb6 157 // Generic signals namings
hudakz 0:a04710facbb6 158 LED1 = PC_13,
hudakz 0:a04710facbb6 159 LED2 = PC_13,
hudakz 0:a04710facbb6 160 LED3 = PC_13,
hudakz 0:a04710facbb6 161 LED4 = PC_13,
hudakz 0:a04710facbb6 162 SERIAL_TX = STDIO_UART_TX,
hudakz 0:a04710facbb6 163 SERIAL_RX = STDIO_UART_RX,
hudakz 0:a04710facbb6 164 USBTX = STDIO_UART_TX,
hudakz 0:a04710facbb6 165 USBRX = STDIO_UART_RX,
hudakz 0:a04710facbb6 166 I2C_SCL = PB_6,
hudakz 0:a04710facbb6 167 I2C_SDA = PB_7,
hudakz 0:a04710facbb6 168 SPI_MOSI = PA_7,
hudakz 0:a04710facbb6 169 SPI_MISO = PA_6,
hudakz 0:a04710facbb6 170 SPI_SCK = PA_5,
hudakz 0:a04710facbb6 171 SPI_CS = PA_4,
hudakz 0:a04710facbb6 172 PWM_OUT = PB_5,
hudakz 0:a04710facbb6 173
hudakz 0:a04710facbb6 174 //USB pins
hudakz 0:a04710facbb6 175 USB_DM = PA_11,
hudakz 0:a04710facbb6 176 USB_DP = PA_12,
hudakz 0:a04710facbb6 177
hudakz 0:a04710facbb6 178 // Not connected
hudakz 0:a04710facbb6 179 NC = (int)0xFFFFFFFF
hudakz 0:a04710facbb6 180 } PinName;
hudakz 0:a04710facbb6 181
hudakz 0:a04710facbb6 182 #ifdef __cplusplus
hudakz 0:a04710facbb6 183 }
hudakz 0:a04710facbb6 184 #endif
hudakz 0:a04710facbb6 185
hudakz 0:a04710facbb6 186 #endif