Based on the libraries by Zoltan Hudak Added #ifdefs to avoid compile errors, so it is easy to select target board: Bluepill, Maple Mini, Nucleo F103, Nucleo F103 with external 8MHz crystal

Dependents:   STM32F103variants_example

Committer:
vargham
Date:
Mon Mar 20 13:22:25 2017 +0000
Revision:
4:6568c3b20d29
Parent:
3:e149147d7c13
.h only implementation. All ifdefs are working now.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vargham 0:c3e42fcc1c16 1 /* mbed Microcontroller Library
vargham 0:c3e42fcc1c16 2 *******************************************************************************
vargham 0:c3e42fcc1c16 3 * Copyright (c) 2014, STMicroelectronics
vargham 0:c3e42fcc1c16 4 * All rights reserved.
vargham 0:c3e42fcc1c16 5 *
vargham 0:c3e42fcc1c16 6 * Redistribution and use in source and binary forms, with or without
vargham 0:c3e42fcc1c16 7 * modification, are permitted provided that the following conditions are met:
vargham 0:c3e42fcc1c16 8 *
vargham 0:c3e42fcc1c16 9 * 1. Redistributions of source code must retain the above copyright notice,
vargham 0:c3e42fcc1c16 10 * this list of conditions and the following disclaimer.
vargham 0:c3e42fcc1c16 11 * 2. Redistributions in binary form must reproduce the above copyright notice,
vargham 0:c3e42fcc1c16 12 * this list of conditions and the following disclaimer in the documentation
vargham 0:c3e42fcc1c16 13 * and/or other materials provided with the distribution.
vargham 0:c3e42fcc1c16 14 * 3. Neither the name of STMicroelectronics nor the names of its contributors
vargham 0:c3e42fcc1c16 15 * may be used to endorse or promote products derived from this software
vargham 0:c3e42fcc1c16 16 * without specific prior written permission.
vargham 0:c3e42fcc1c16 17 *
vargham 0:c3e42fcc1c16 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
vargham 0:c3e42fcc1c16 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
vargham 0:c3e42fcc1c16 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
vargham 0:c3e42fcc1c16 21 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
vargham 0:c3e42fcc1c16 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
vargham 0:c3e42fcc1c16 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
vargham 0:c3e42fcc1c16 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
vargham 0:c3e42fcc1c16 25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
vargham 0:c3e42fcc1c16 26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
vargham 0:c3e42fcc1c16 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
vargham 0:c3e42fcc1c16 28 *******************************************************************************
vargham 0:c3e42fcc1c16 29 *
vargham 0:c3e42fcc1c16 30 * Modified for Maple mini board by Zoltan Hudak, 2016
vargham 0:c3e42fcc1c16 31 * Modified for Bluepill board by Zoltan Hudak, 2016
vargham 0:c3e42fcc1c16 32 * Modified for #ifdef selectable boards and added Nucleo external oscillator by Mark Peter Vargha, 2017
vargham 0:c3e42fcc1c16 33 * Added #ifdefs to avoid compile errors, so it is easy to select target board: Bluepill, Maple Mini, Nucleo F103, Nucleo F103 with external 8MHz crystal
vargham 0:c3e42fcc1c16 34 *
vargham 0:c3e42fcc1c16 35 */
vargham 4:6568c3b20d29 36 /**
vargham 4:6568c3b20d29 37 * Example:
vargham 4:6568c3b20d29 38 * @code
vargham 4:6568c3b20d29 39 #define USE_BOARD USE_MAPLE_MINI
vargham 4:6568c3b20d29 40
vargham 4:6568c3b20d29 41 #include "stm32f103variants.h"
vargham 4:6568c3b20d29 42 #include "mbed.h"
vargham 4:6568c3b20d29 43
vargham 4:6568c3b20d29 44 DigitalOut led1(LED1);
vargham 4:6568c3b20d29 45 Serial serialPc(PA_9, PA_10); //Tx, Rx
vargham 4:6568c3b20d29 46
vargham 4:6568c3b20d29 47 int main()
vargham 4:6568c3b20d29 48 {
vargham 4:6568c3b20d29 49 led1 = 0;
vargham 4:6568c3b20d29 50 confSysClock();
vargham 4:6568c3b20d29 51 serialPc.baud(460800);
vargham 4:6568c3b20d29 52 serialPc.printf("This is a STM32F103 test.\r\n");
vargham 4:6568c3b20d29 53 serialPc.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);
vargham 4:6568c3b20d29 54 serialPc.printf("LED=%d\r\n", led1.read());
vargham 4:6568c3b20d29 55
vargham 4:6568c3b20d29 56 while (true)
vargham 4:6568c3b20d29 57 {
vargham 4:6568c3b20d29 58 led1 = !led1;
vargham 4:6568c3b20d29 59 serialPc.printf("LED=%d\r\n", led1.read());
vargham 4:6568c3b20d29 60 wait(1.0);
vargham 4:6568c3b20d29 61 }
vargham 4:6568c3b20d29 62 }
vargham 4:6568c3b20d29 63 *
vargham 4:6568c3b20d29 64 */
vargham 0:c3e42fcc1c16 65
vargham 0:c3e42fcc1c16 66 #ifndef STM32F103variants_H_INCLUDED
vargham 0:c3e42fcc1c16 67 #define STM32F103variants_H_INCLUDED
vargham 0:c3e42fcc1c16 68
vargham 4:6568c3b20d29 69 #define USE_OTHER 0
vargham 4:6568c3b20d29 70 #define USE_BLUEPILL 1
vargham 4:6568c3b20d29 71 #define USE_MAPLE_MINI 2
vargham 4:6568c3b20d29 72 #define USE_NUCLEO_EXTOSC 3
vargham 0:c3e42fcc1c16 73
vargham 4:6568c3b20d29 74 #ifndef USE_BOARD
vargham 4:6568c3b20d29 75 #define USE_BOARD USE_OTHER
vargham 4:6568c3b20d29 76 #endif
vargham 0:c3e42fcc1c16 77
vargham 4:6568c3b20d29 78 #if (USE_BOARD == USE_BLUEPILL)
vargham 0:c3e42fcc1c16 79
vargham 0:c3e42fcc1c16 80 #ifndef MBED_PINNAMES_H
vargham 0:c3e42fcc1c16 81 #define MBED_PINNAMES_H
vargham 0:c3e42fcc1c16 82
vargham 0:c3e42fcc1c16 83 #include "cmsis.h"
vargham 0:c3e42fcc1c16 84
vargham 0:c3e42fcc1c16 85 #ifdef __cplusplus
vargham 0:c3e42fcc1c16 86 extern "C" {
vargham 2:6badfd5a7ced 87 #endif //__cplusplus
vargham 0:c3e42fcc1c16 88
vargham 0:c3e42fcc1c16 89 #define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((MODE & 0x0F) << 0) |\
vargham 0:c3e42fcc1c16 90 ((PUPD & 0x07) << 4) |\
vargham 0:c3e42fcc1c16 91 ((AFNUM & 0x0F) << 7)))
vargham 0:c3e42fcc1c16 92
vargham 0:c3e42fcc1c16 93 #define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
vargham 0:c3e42fcc1c16 94 ((PUPD & 0x07) << 4) |\
vargham 0:c3e42fcc1c16 95 ((AFNUM & 0x0F) << 7) |\
vargham 0:c3e42fcc1c16 96 ((CHANNEL & 0x0F) << 11) |\
vargham 0:c3e42fcc1c16 97 ((INVERTED & 0x01) << 15)))
vargham 0:c3e42fcc1c16 98
vargham 0:c3e42fcc1c16 99 #define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
vargham 0:c3e42fcc1c16 100 #define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
vargham 0:c3e42fcc1c16 101 #define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
vargham 0:c3e42fcc1c16 102 #define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
vargham 0:c3e42fcc1c16 103 #define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
vargham 0:c3e42fcc1c16 104
vargham 0:c3e42fcc1c16 105 #define STM_MODE_INPUT (0)
vargham 0:c3e42fcc1c16 106 #define STM_MODE_OUTPUT_PP (1)
vargham 0:c3e42fcc1c16 107 #define STM_MODE_OUTPUT_OD (2)
vargham 0:c3e42fcc1c16 108 #define STM_MODE_AF_PP (3)
vargham 0:c3e42fcc1c16 109 #define STM_MODE_AF_OD (4)
vargham 0:c3e42fcc1c16 110 #define STM_MODE_ANALOG (5)
vargham 0:c3e42fcc1c16 111 #define STM_MODE_IT_RISING (6)
vargham 0:c3e42fcc1c16 112 #define STM_MODE_IT_FALLING (7)
vargham 0:c3e42fcc1c16 113 #define STM_MODE_IT_RISING_FALLING (8)
vargham 0:c3e42fcc1c16 114 #define STM_MODE_EVT_RISING (9)
vargham 0:c3e42fcc1c16 115 #define STM_MODE_EVT_FALLING (10)
vargham 0:c3e42fcc1c16 116 #define STM_MODE_EVT_RISING_FALLING (11)
vargham 0:c3e42fcc1c16 117 #define STM_MODE_IT_EVT_RESET (12)
vargham 0:c3e42fcc1c16 118
vargham 0:c3e42fcc1c16 119 // High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H)
vargham 0:c3e42fcc1c16 120 // Low nibble = pin number
vargham 0:c3e42fcc1c16 121 #define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF)
vargham 0:c3e42fcc1c16 122 #define STM_PIN(X) ((uint32_t)(X) & 0xF)
vargham 0:c3e42fcc1c16 123
vargham 0:c3e42fcc1c16 124 typedef enum {
vargham 0:c3e42fcc1c16 125 PIN_INPUT,
vargham 0:c3e42fcc1c16 126 PIN_OUTPUT
vargham 0:c3e42fcc1c16 127 } PinDirection;
vargham 0:c3e42fcc1c16 128
vargham 0:c3e42fcc1c16 129 typedef enum {
vargham 0:c3e42fcc1c16 130 // Not connected
vargham 0:c3e42fcc1c16 131 NC = (int)0xFFFFFFFF,
vargham 0:c3e42fcc1c16 132
vargham 0:c3e42fcc1c16 133 // Ports
vargham 0:c3e42fcc1c16 134 PA_0 = 0x00,
vargham 0:c3e42fcc1c16 135 PA_1 = 0x01,
vargham 0:c3e42fcc1c16 136 PA_2 = 0x02,
vargham 0:c3e42fcc1c16 137 PA_3 = 0x03,
vargham 0:c3e42fcc1c16 138 PA_4 = 0x04,
vargham 0:c3e42fcc1c16 139 PA_5 = 0x05,
vargham 0:c3e42fcc1c16 140 PA_6 = 0x06,
vargham 0:c3e42fcc1c16 141 PA_7 = 0x07,
vargham 0:c3e42fcc1c16 142 PA_8 = 0x08,
vargham 0:c3e42fcc1c16 143 PA_9 = 0x09,
vargham 0:c3e42fcc1c16 144 PA_10 = 0x0A,
vargham 0:c3e42fcc1c16 145 PA_11 = 0x0B,
vargham 0:c3e42fcc1c16 146 PA_12 = 0x0C,
vargham 0:c3e42fcc1c16 147 PA_13 = NC,
vargham 0:c3e42fcc1c16 148 PA_14 = NC,
vargham 0:c3e42fcc1c16 149 PA_15 = 0x0F,
vargham 0:c3e42fcc1c16 150
vargham 0:c3e42fcc1c16 151 PB_0 = 0x10,
vargham 0:c3e42fcc1c16 152 PB_1 = 0x11,
vargham 0:c3e42fcc1c16 153 PB_2 = NC,
vargham 0:c3e42fcc1c16 154 PB_3 = 0x13,
vargham 0:c3e42fcc1c16 155 PB_4 = 0x14,
vargham 0:c3e42fcc1c16 156 PB_5 = 0x15,
vargham 0:c3e42fcc1c16 157 PB_6 = 0x16,
vargham 0:c3e42fcc1c16 158 PB_7 = 0x17,
vargham 0:c3e42fcc1c16 159 PB_8 = 0x18,
vargham 0:c3e42fcc1c16 160 PB_9 = 0x19,
vargham 0:c3e42fcc1c16 161 PB_10 = 0x1A,
vargham 0:c3e42fcc1c16 162 PB_11 = 0x1B,
vargham 0:c3e42fcc1c16 163 PB_12 = 0x1C,
vargham 0:c3e42fcc1c16 164 PB_13 = 0x1D,
vargham 0:c3e42fcc1c16 165 PB_14 = 0x1E,
vargham 0:c3e42fcc1c16 166 PB_15 = 0x1F,
vargham 0:c3e42fcc1c16 167
vargham 0:c3e42fcc1c16 168 PC_0 = NC,
vargham 0:c3e42fcc1c16 169 PC_1 = NC,
vargham 0:c3e42fcc1c16 170 PC_2 = NC,
vargham 0:c3e42fcc1c16 171 PC_3 = NC,
vargham 0:c3e42fcc1c16 172 PC_4 = NC,
vargham 0:c3e42fcc1c16 173 PC_5 = NC,
vargham 0:c3e42fcc1c16 174 PC_6 = NC,
vargham 0:c3e42fcc1c16 175 PC_7 = NC,
vargham 0:c3e42fcc1c16 176 PC_8 = NC,
vargham 0:c3e42fcc1c16 177 PC_9 = NC,
vargham 0:c3e42fcc1c16 178 PC_10 = NC,
vargham 0:c3e42fcc1c16 179 PC_11 = NC,
vargham 0:c3e42fcc1c16 180 PC_12 = NC,
vargham 0:c3e42fcc1c16 181 PC_13 = 0x2D,
vargham 0:c3e42fcc1c16 182 PC_14 = 0x2E,
vargham 0:c3e42fcc1c16 183 PC_15 = 0x2F,
vargham 0:c3e42fcc1c16 184
vargham 0:c3e42fcc1c16 185 PD_2 = NC,
vargham 0:c3e42fcc1c16 186
vargham 0:c3e42fcc1c16 187 // ADC internal channels
vargham 0:c3e42fcc1c16 188 ADC_TEMP = 0xF0,
vargham 0:c3e42fcc1c16 189 ADC_VREF = 0xF1,
vargham 0:c3e42fcc1c16 190
vargham 0:c3e42fcc1c16 191 // Arduino connector namings
vargham 0:c3e42fcc1c16 192 A0 = PA_0,
vargham 0:c3e42fcc1c16 193 A1 = PA_1,
vargham 0:c3e42fcc1c16 194 A2 = PA_4,
vargham 0:c3e42fcc1c16 195 A3 = PB_0,
vargham 0:c3e42fcc1c16 196 A4 = NC,
vargham 0:c3e42fcc1c16 197 A5 = NC,
vargham 0:c3e42fcc1c16 198 D0 = PA_3,
vargham 0:c3e42fcc1c16 199 D1 = PA_2,
vargham 0:c3e42fcc1c16 200 D2 = PA_10,
vargham 0:c3e42fcc1c16 201 D3 = PB_3,
vargham 0:c3e42fcc1c16 202 D4 = PB_5,
vargham 0:c3e42fcc1c16 203 D5 = PB_4,
vargham 0:c3e42fcc1c16 204 D6 = PB_10,
vargham 0:c3e42fcc1c16 205 D7 = PA_8,
vargham 0:c3e42fcc1c16 206 D8 = PA_9,
vargham 0:c3e42fcc1c16 207 D9 = NC,
vargham 0:c3e42fcc1c16 208 D10 = PB_6,
vargham 0:c3e42fcc1c16 209 D11 = PA_7,
vargham 0:c3e42fcc1c16 210 D12 = PA_6,
vargham 0:c3e42fcc1c16 211 D13 = PA_5,
vargham 0:c3e42fcc1c16 212 D14 = PB_9,
vargham 0:c3e42fcc1c16 213 D15 = PB_8,
vargham 0:c3e42fcc1c16 214
vargham 0:c3e42fcc1c16 215 // Generic signals namings
vargham 0:c3e42fcc1c16 216 LED1 = PC_13,
vargham 0:c3e42fcc1c16 217 LED2 = NC,
vargham 0:c3e42fcc1c16 218 LED3 = NC,
vargham 0:c3e42fcc1c16 219 LED4 = NC,
vargham 0:c3e42fcc1c16 220 USER_BUTTON = NC,
vargham 0:c3e42fcc1c16 221 SERIAL_TX = PA_2,
vargham 0:c3e42fcc1c16 222 SERIAL_RX = PA_3,
vargham 0:c3e42fcc1c16 223 USBTX = PA_2,
vargham 0:c3e42fcc1c16 224 USBRX = PA_3,
vargham 0:c3e42fcc1c16 225 I2C_SCL = PB_8,
vargham 0:c3e42fcc1c16 226 I2C_SDA = PB_9,
vargham 0:c3e42fcc1c16 227 SPI_MOSI = PA_7,
vargham 0:c3e42fcc1c16 228 SPI_MISO = PA_6,
vargham 0:c3e42fcc1c16 229 SPI_SCK = PA_5,
vargham 0:c3e42fcc1c16 230 SPI_CS = PB_6,
vargham 0:c3e42fcc1c16 231 PWM_OUT = PB_3
vargham 0:c3e42fcc1c16 232 } PinName;
vargham 0:c3e42fcc1c16 233
vargham 0:c3e42fcc1c16 234 typedef enum {
vargham 0:c3e42fcc1c16 235 PullNone = 0,
vargham 0:c3e42fcc1c16 236 PullUp = 1,
vargham 0:c3e42fcc1c16 237 PullDown = 2,
vargham 0:c3e42fcc1c16 238 OpenDrain = 3,
vargham 0:c3e42fcc1c16 239 PullDefault = PullNone
vargham 0:c3e42fcc1c16 240 } PinMode;
vargham 0:c3e42fcc1c16 241
vargham 0:c3e42fcc1c16 242 #ifdef __cplusplus
vargham 0:c3e42fcc1c16 243 }
vargham 0:c3e42fcc1c16 244 #endif
vargham 0:c3e42fcc1c16 245
vargham 0:c3e42fcc1c16 246 #endif //MBED_PINNAMES_H
vargham 0:c3e42fcc1c16 247
vargham 0:c3e42fcc1c16 248 #endif //USE_BLUEPILL
vargham 0:c3e42fcc1c16 249
vargham 0:c3e42fcc1c16 250 /*
vargham 0:c3e42fcc1c16 251 *********************************************************************************************************************
vargham 0:c3e42fcc1c16 252 */
vargham 0:c3e42fcc1c16 253
vargham 4:6568c3b20d29 254 #if (USE_BOARD == USE_MAPLE_MINI)
vargham 0:c3e42fcc1c16 255
vargham 0:c3e42fcc1c16 256 #ifndef MBED_PINNAMES_H
vargham 0:c3e42fcc1c16 257 #define MBED_PINNAMES_H
vargham 0:c3e42fcc1c16 258
vargham 0:c3e42fcc1c16 259 #include "cmsis.h"
vargham 0:c3e42fcc1c16 260
vargham 0:c3e42fcc1c16 261 #ifdef __cplusplus
vargham 0:c3e42fcc1c16 262 extern "C" {
vargham 0:c3e42fcc1c16 263 #endif
vargham 0:c3e42fcc1c16 264
vargham 0:c3e42fcc1c16 265 #define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((MODE & 0x0F) << 0) |\
vargham 0:c3e42fcc1c16 266 ((PUPD & 0x07) << 4) |\
vargham 0:c3e42fcc1c16 267 ((AFNUM & 0x0F) << 7)))
vargham 0:c3e42fcc1c16 268
vargham 0:c3e42fcc1c16 269 #define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
vargham 0:c3e42fcc1c16 270 ((PUPD & 0x07) << 4) |\
vargham 0:c3e42fcc1c16 271 ((AFNUM & 0x0F) << 7) |\
vargham 0:c3e42fcc1c16 272 ((CHANNEL & 0x0F) << 11) |\
vargham 0:c3e42fcc1c16 273 ((INVERTED & 0x01) << 15)))
vargham 0:c3e42fcc1c16 274
vargham 0:c3e42fcc1c16 275 #define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
vargham 0:c3e42fcc1c16 276 #define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
vargham 0:c3e42fcc1c16 277 #define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
vargham 0:c3e42fcc1c16 278 #define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
vargham 0:c3e42fcc1c16 279 #define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
vargham 0:c3e42fcc1c16 280
vargham 0:c3e42fcc1c16 281 #define STM_MODE_INPUT (0)
vargham 0:c3e42fcc1c16 282 #define STM_MODE_OUTPUT_PP (1)
vargham 0:c3e42fcc1c16 283 #define STM_MODE_OUTPUT_OD (2)
vargham 0:c3e42fcc1c16 284 #define STM_MODE_AF_PP (3)
vargham 0:c3e42fcc1c16 285 #define STM_MODE_AF_OD (4)
vargham 0:c3e42fcc1c16 286 #define STM_MODE_ANALOG (5)
vargham 0:c3e42fcc1c16 287 #define STM_MODE_IT_RISING (6)
vargham 0:c3e42fcc1c16 288 #define STM_MODE_IT_FALLING (7)
vargham 0:c3e42fcc1c16 289 #define STM_MODE_IT_RISING_FALLING (8)
vargham 0:c3e42fcc1c16 290 #define STM_MODE_EVT_RISING (9)
vargham 0:c3e42fcc1c16 291 #define STM_MODE_EVT_FALLING (10)
vargham 0:c3e42fcc1c16 292 #define STM_MODE_EVT_RISING_FALLING (11)
vargham 0:c3e42fcc1c16 293 #define STM_MODE_IT_EVT_RESET (12)
vargham 0:c3e42fcc1c16 294
vargham 0:c3e42fcc1c16 295 // High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H)
vargham 0:c3e42fcc1c16 296 // Low nibble = pin number
vargham 0:c3e42fcc1c16 297 #define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF)
vargham 0:c3e42fcc1c16 298 #define STM_PIN(X) ((uint32_t)(X) & 0xF)
vargham 0:c3e42fcc1c16 299
vargham 0:c3e42fcc1c16 300 typedef enum {
vargham 0:c3e42fcc1c16 301 PIN_INPUT,
vargham 0:c3e42fcc1c16 302 PIN_OUTPUT
vargham 0:c3e42fcc1c16 303 } PinDirection;
vargham 0:c3e42fcc1c16 304
vargham 0:c3e42fcc1c16 305 typedef enum {
vargham 0:c3e42fcc1c16 306 // Not connected
vargham 0:c3e42fcc1c16 307 NC = (int)0xFFFFFFFF,
vargham 0:c3e42fcc1c16 308
vargham 0:c3e42fcc1c16 309 PA_0 = 0x00,
vargham 0:c3e42fcc1c16 310 PA_1 = 0x01,
vargham 0:c3e42fcc1c16 311 PA_2 = 0x02,
vargham 0:c3e42fcc1c16 312 PA_3 = 0x03,
vargham 0:c3e42fcc1c16 313 PA_4 = 0x04,
vargham 0:c3e42fcc1c16 314 PA_5 = 0x05,
vargham 0:c3e42fcc1c16 315 PA_6 = 0x06,
vargham 0:c3e42fcc1c16 316 PA_7 = 0x07,
vargham 0:c3e42fcc1c16 317 PA_8 = 0x08,
vargham 0:c3e42fcc1c16 318 PA_9 = 0x09,
vargham 0:c3e42fcc1c16 319 PA_10 = 0x0A,
vargham 0:c3e42fcc1c16 320 PA_11 = 0x0B,
vargham 0:c3e42fcc1c16 321 PA_12 = 0x0C,
vargham 0:c3e42fcc1c16 322 PA_13 = 0x0D,
vargham 0:c3e42fcc1c16 323 PA_14 = 0x0E,
vargham 0:c3e42fcc1c16 324 PA_15 = 0x0F,
vargham 0:c3e42fcc1c16 325
vargham 0:c3e42fcc1c16 326 PB_0 = 0x10,
vargham 0:c3e42fcc1c16 327 PB_1 = 0x11,
vargham 0:c3e42fcc1c16 328 PB_2 = 0x12,
vargham 0:c3e42fcc1c16 329 PB_3 = 0x13,
vargham 0:c3e42fcc1c16 330 PB_4 = 0x14,
vargham 0:c3e42fcc1c16 331 PB_5 = 0x15,
vargham 0:c3e42fcc1c16 332 PB_6 = 0x16,
vargham 0:c3e42fcc1c16 333 PB_7 = 0x17,
vargham 0:c3e42fcc1c16 334 PB_8 = 0x18,
vargham 0:c3e42fcc1c16 335 PB_9 = 0x19,
vargham 0:c3e42fcc1c16 336 PB_10 = 0x1A,
vargham 0:c3e42fcc1c16 337 PB_11 = 0x1B,
vargham 0:c3e42fcc1c16 338 PB_12 = 0x1C,
vargham 0:c3e42fcc1c16 339 PB_13 = 0x1D,
vargham 0:c3e42fcc1c16 340 PB_14 = 0x1E,
vargham 0:c3e42fcc1c16 341 PB_15 = 0x1F,
vargham 0:c3e42fcc1c16 342
vargham 0:c3e42fcc1c16 343 PC_0 = NC,
vargham 0:c3e42fcc1c16 344 PC_1 = NC,
vargham 0:c3e42fcc1c16 345 PC_2 = NC,
vargham 0:c3e42fcc1c16 346 PC_3 = NC,
vargham 0:c3e42fcc1c16 347 PC_4 = NC,
vargham 0:c3e42fcc1c16 348 PC_5 = NC,
vargham 0:c3e42fcc1c16 349 PC_6 = NC,
vargham 0:c3e42fcc1c16 350 PC_7 = NC,
vargham 0:c3e42fcc1c16 351 PC_8 = NC,
vargham 0:c3e42fcc1c16 352 PC_9 = NC,
vargham 0:c3e42fcc1c16 353 PC_10 = NC,
vargham 0:c3e42fcc1c16 354 PC_11 = NC,
vargham 0:c3e42fcc1c16 355 PC_12 = NC,
vargham 0:c3e42fcc1c16 356 PC_13 = 0x2D,
vargham 0:c3e42fcc1c16 357 PC_14 = 0x2E,
vargham 0:c3e42fcc1c16 358 PC_15 = 0x2F,
vargham 0:c3e42fcc1c16 359
vargham 0:c3e42fcc1c16 360 PD_2 = NC,
vargham 0:c3e42fcc1c16 361
vargham 0:c3e42fcc1c16 362 // ADC internal channels
vargham 0:c3e42fcc1c16 363 ADC_TEMP = 0xF0,
vargham 0:c3e42fcc1c16 364 ADC_VREF = 0xF1,
vargham 0:c3e42fcc1c16 365
vargham 0:c3e42fcc1c16 366 // Arduino connector namings
vargham 0:c3e42fcc1c16 367 A0 = PA_0,
vargham 0:c3e42fcc1c16 368 A1 = PA_1,
vargham 0:c3e42fcc1c16 369 A2 = PA_4,
vargham 0:c3e42fcc1c16 370 A3 = PB_0,
vargham 0:c3e42fcc1c16 371 A4 = NC,
vargham 0:c3e42fcc1c16 372 A5 = NC,
vargham 0:c3e42fcc1c16 373 D0 = PA_3,
vargham 0:c3e42fcc1c16 374 D1 = PA_2,
vargham 0:c3e42fcc1c16 375 D2 = PA_10,
vargham 0:c3e42fcc1c16 376 D3 = PB_3,
vargham 0:c3e42fcc1c16 377 D4 = PB_5,
vargham 0:c3e42fcc1c16 378 D5 = PB_4,
vargham 0:c3e42fcc1c16 379 D6 = PB_10,
vargham 0:c3e42fcc1c16 380 D7 = PA_8,
vargham 0:c3e42fcc1c16 381 D8 = PA_9,
vargham 0:c3e42fcc1c16 382 D9 = NC,
vargham 0:c3e42fcc1c16 383 D10 = PB_6,
vargham 0:c3e42fcc1c16 384 D11 = PA_7,
vargham 0:c3e42fcc1c16 385 D12 = PA_6,
vargham 0:c3e42fcc1c16 386 D13 = PA_5,
vargham 0:c3e42fcc1c16 387 D14 = PB_9,
vargham 0:c3e42fcc1c16 388 D15 = PB_8,
vargham 0:c3e42fcc1c16 389
vargham 0:c3e42fcc1c16 390 // Generic signals namings
vargham 0:c3e42fcc1c16 391 LED1 = PB_1,
vargham 0:c3e42fcc1c16 392 USER_BUTTON = PB_8,
vargham 0:c3e42fcc1c16 393 SERIAL_TX = PA_2,
vargham 0:c3e42fcc1c16 394 SERIAL_RX = PA_3,
vargham 0:c3e42fcc1c16 395 USBTX = PA_2,
vargham 0:c3e42fcc1c16 396 USBRX = PA_3,
vargham 0:c3e42fcc1c16 397 I2C_SCL = PB_6,
vargham 0:c3e42fcc1c16 398 I2C_SDA = PB_7,
vargham 0:c3e42fcc1c16 399 SPI_MOSI = PA_7,
vargham 0:c3e42fcc1c16 400 SPI_MISO = PA_6,
vargham 0:c3e42fcc1c16 401 SPI_SCK = PA_5,
vargham 0:c3e42fcc1c16 402 SPI_CS = PB_6,
vargham 0:c3e42fcc1c16 403 PWM_OUT = PB_3
vargham 0:c3e42fcc1c16 404
vargham 0:c3e42fcc1c16 405 } PinName;
vargham 0:c3e42fcc1c16 406
vargham 0:c3e42fcc1c16 407 typedef enum {
vargham 0:c3e42fcc1c16 408 PullNone = 0,
vargham 0:c3e42fcc1c16 409 PullUp = 1,
vargham 0:c3e42fcc1c16 410 PullDown = 2,
vargham 0:c3e42fcc1c16 411 OpenDrain = 3,
vargham 0:c3e42fcc1c16 412 PullDefault = PullNone
vargham 0:c3e42fcc1c16 413 } PinMode;
vargham 0:c3e42fcc1c16 414
vargham 0:c3e42fcc1c16 415 #ifdef __cplusplus
vargham 0:c3e42fcc1c16 416 }
vargham 2:6badfd5a7ced 417 #endif //__cplusplus
vargham 0:c3e42fcc1c16 418
vargham 0:c3e42fcc1c16 419 #endif //MBED_PINNAMES_H
vargham 0:c3e42fcc1c16 420
vargham 0:c3e42fcc1c16 421 #endif //USE_MAPLE_MINI
vargham 0:c3e42fcc1c16 422
vargham 4:6568c3b20d29 423 #if (USE_BOARD > USE_OTHER)
vargham 4:6568c3b20d29 424
vargham 4:6568c3b20d29 425 bool HSE_SystemClock_Config(void) {
vargham 4:6568c3b20d29 426 RCC_OscInitTypeDef RCC_OscInitStruct;
vargham 4:6568c3b20d29 427
vargham 4:6568c3b20d29 428 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
vargham 4:6568c3b20d29 429 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
vargham 4:6568c3b20d29 430 RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
vargham 4:6568c3b20d29 431 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
vargham 4:6568c3b20d29 432 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
vargham 4:6568c3b20d29 433 RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
vargham 4:6568c3b20d29 434
vargham 4:6568c3b20d29 435 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
vargham 4:6568c3b20d29 436 return false;
vargham 4:6568c3b20d29 437 }
vargham 4:6568c3b20d29 438
vargham 4:6568c3b20d29 439 RCC_ClkInitTypeDef RCC_ClkInitStruct;
vargham 4:6568c3b20d29 440
vargham 4:6568c3b20d29 441 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
vargham 4:6568c3b20d29 442 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
vargham 4:6568c3b20d29 443 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
vargham 4:6568c3b20d29 444 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
vargham 4:6568c3b20d29 445 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
vargham 4:6568c3b20d29 446 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
vargham 4:6568c3b20d29 447 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
vargham 4:6568c3b20d29 448 return false;
vargham 4:6568c3b20d29 449 }
vargham 4:6568c3b20d29 450
vargham 4:6568c3b20d29 451 RCC_PeriphCLKInitTypeDef PeriphClkInit;
vargham 4:6568c3b20d29 452
vargham 4:6568c3b20d29 453 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB;
vargham 4:6568c3b20d29 454 PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
vargham 4:6568c3b20d29 455 PeriphClkInit.UsbClockSelection = RCC_USBPLLCLK_DIV1_5;
vargham 4:6568c3b20d29 456 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
vargham 4:6568c3b20d29 457 return false;
vargham 4:6568c3b20d29 458 }
vargham 4:6568c3b20d29 459 return true;
vargham 4:6568c3b20d29 460 }
vargham 4:6568c3b20d29 461
vargham 4:6568c3b20d29 462 bool doConfSysClock()
vargham 4:6568c3b20d29 463 {
vargham 4:6568c3b20d29 464 HAL_RCC_DeInit();
vargham 4:6568c3b20d29 465 if (!HSE_SystemClock_Config()) {
vargham 4:6568c3b20d29 466 return false;
vargham 4:6568c3b20d29 467 }
vargham 4:6568c3b20d29 468 SystemCoreClockUpdate();
vargham 4:6568c3b20d29 469 return true;
vargham 4:6568c3b20d29 470 }
vargham 4:6568c3b20d29 471
vargham 4:6568c3b20d29 472 #endif //(USE_BOARD > USE_OTHER)
vargham 4:6568c3b20d29 473
vargham 4:6568c3b20d29 474 bool confSysClock(void) {
vargham 4:6568c3b20d29 475 #if (USE_BOARD > USE_OTHER)
vargham 4:6568c3b20d29 476 return doConfSysClock();
vargham 4:6568c3b20d29 477 #else
vargham 4:6568c3b20d29 478 return false;
vargham 4:6568c3b20d29 479 #endif
vargham 4:6568c3b20d29 480 }
vargham 4:6568c3b20d29 481
vargham 0:c3e42fcc1c16 482 #endif /* STM32F103variants_H_INCLUDED */