STM32 F103RB support for mbed-rpc, tested just once with the blinking example

Dependents:   rpc_over_serial_irq

Fork of mbed-rpc by mbed official

Committer:
mosi
Date:
Mon Aug 04 16:50:46 2014 +0000
Revision:
7:279476428ecf
Added STM32 F103RB TARGET_NUCLEO_F103RB support for mbed RPC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mosi 7:279476428ecf 1 /* mbed Microcontroller Library
mosi 7:279476428ecf 2 * Copyright (c) 2006-2013 ARM Limited
mosi 7:279476428ecf 3 *
mosi 7:279476428ecf 4 * Licensed under the Apache License, Version 2.0 (the "License");
mosi 7:279476428ecf 5 * you may not use this file except in compliance with the License.
mosi 7:279476428ecf 6 * You may obtain a copy of the License at
mosi 7:279476428ecf 7 *
mosi 7:279476428ecf 8 * http://www.apache.org/licenses/LICENSE-2.0
mosi 7:279476428ecf 9 *
mosi 7:279476428ecf 10 * Unless required by applicable law or agreed to in writing, software
mosi 7:279476428ecf 11 * distributed under the License is distributed on an "AS IS" BASIS,
mosi 7:279476428ecf 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mosi 7:279476428ecf 13 * See the License for the specific language governing permissions and
mosi 7:279476428ecf 14 * limitations under the License.
mosi 7:279476428ecf 15 */
mosi 7:279476428ecf 16 #include "stmbed.h"
mosi 7:279476428ecf 17 #include "port_api.h"
mosi 7:279476428ecf 18
mosi 7:279476428ecf 19 namespace mbed {
mosi 7:279476428ecf 20
mosi 7:279476428ecf 21 PinName parse_pins(const char *str) {
mosi 7:279476428ecf 22 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368)
mosi 7:279476428ecf 23 static const PinName pin_names[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14
mosi 7:279476428ecf 24 , p15, p16, p17, p18, p19, p20, p21, p22, p23
mosi 7:279476428ecf 25 , p24, p25, p26, p27, p28, p29, p30};
mosi 7:279476428ecf 26 #elif defined(TARGET_LPC1114)
mosi 7:279476428ecf 27 static const PinName pin_names[] = {dp1, dp2, dp4, dp5, dp6, dp9, dp10, dp11
mosi 7:279476428ecf 28 , dp13, dp14, dp15, dp16, dp17, dp18, dp23
mosi 7:279476428ecf 29 , dp24, dp25, dp26, dp27, dp28};
mosi 7:279476428ecf 30 #elif defined(TARGET_LPC4088)
mosi 7:279476428ecf 31 static const PinName pin_names[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14
mosi 7:279476428ecf 32 , p15, p16, p17, p18, p19, p20, NC, NC, p23
mosi 7:279476428ecf 33 , p24, p25, p26, p27, p28, p29, p30, p31, p32
mosi 7:279476428ecf 34 , p33, p34, NC, NC, p37, p38, p39};
mosi 7:279476428ecf 35
mosi 7:279476428ecf 36 #elif defined(TARGET_STM32F4XX) || defined(TARGET_STM32F1XX)
mosi 7:279476428ecf 37 static const PinName pin_names[] = { p5, p6, p7, p8, p9, p10, p11, p12, p13, p14
mosi 7:279476428ecf 38 , p15, p16, p17, p18, p19, p20, p21, p22, p23
mosi 7:279476428ecf 39 , p24, p25, p26, p27, p28, p29, p30, p31, p32
mosi 7:279476428ecf 40 , p33, p34, NC, NC, NC, NC, NC};
mosi 7:279476428ecf 41 #endif
mosi 7:279476428ecf 42
mosi 7:279476428ecf 43 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) || defined(TARGET_LPC812) || defined(TARGET_LPC4088)|| defined(TARGET_LPC1114)
mosi 7:279476428ecf 44 if (str[0] == 'P') { // Pn_n
mosi 7:279476428ecf 45 uint32_t port = str[1] - '0';
mosi 7:279476428ecf 46 uint32_t pin = str[3] - '0'; // Pn_n
mosi 7:279476428ecf 47 uint32_t pin2 = str[4] - '0'; // Pn_nn
mosi 7:279476428ecf 48 if (pin2 <= 9) {
mosi 7:279476428ecf 49 pin = pin * 10 + pin2;
mosi 7:279476428ecf 50 }
mosi 7:279476428ecf 51 return port_pin((PortName)port, pin);
mosi 7:279476428ecf 52
mosi 7:279476428ecf 53 #elif defined(TARGET_KL25Z)
mosi 7:279476428ecf 54 if (str[0] == 'P' && str[1] == 'T') { // PTx_n
mosi 7:279476428ecf 55 uint32_t port = str[2] - 'A';
mosi 7:279476428ecf 56 uint32_t pin = str[3] - '0'; // PTxn
mosi 7:279476428ecf 57 uint32_t pin2 = str[4] - '0'; // PTxnn
mosi 7:279476428ecf 58
mosi 7:279476428ecf 59 if (pin2 <= 9) {
mosi 7:279476428ecf 60 pin = pin * 10 + pin2;
mosi 7:279476428ecf 61 }
mosi 7:279476428ecf 62 return port_pin((PortName)port, pin);
mosi 7:279476428ecf 63 #endif
mosi 7:279476428ecf 64
mosi 7:279476428ecf 65 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) || defined(TARGET_STM32F3XX) || defined(TARGET_STM32F4XX) || defined(TARGET_NUCLEO_F103RB)
mosi 7:279476428ecf 66
mosi 7:279476428ecf 67 #if defined(TARGET_NUCLEO_F103RB) || defined(TARGET_NUCLEO_L152RE) || \
mosi 7:279476428ecf 68 defined(TARGET_NUCLEO_F302R8) || \
mosi 7:279476428ecf 69 defined(TARGET_NUCLEO_F030R8) || \
mosi 7:279476428ecf 70 defined(TARGET_NUCLEO_F401RE) || \
mosi 7:279476428ecf 71 defined(TARGET_NUCLEO_F411RE) || \
mosi 7:279476428ecf 72 defined(TARGET_NUCLEO_F072RB) || \
mosi 7:279476428ecf 73 defined(TARGET_NUCLEO_F334R8) || \
mosi 7:279476428ecf 74 defined(TARGET_NUCLEO_L053R8)
mosi 7:279476428ecf 75 //#define TXPIN STDIO_UART_TX
mosi 7:279476428ecf 76 //#endif
mosi 7:279476428ecf 77 //TARGET_NUCLEO_L152RE
mosi 7:279476428ecf 78 //TARGET_STM32F4XX) || defined(TARGET_STM32F1XX
mosi 7:279476428ecf 79 //TARGET_STM32F4XX) || defined(TARGET_STM32F103)
mosi 7:279476428ecf 80
mosi 7:279476428ecf 81 } else if (str[0] == 'p') { // pn
mosi 7:279476428ecf 82 uint32_t pin = str[1] - '0'; // pn
mosi 7:279476428ecf 83 uint32_t pin2 = str[2] - '0'; // pnn
mosi 7:279476428ecf 84 if (pin2 <= 9) {
mosi 7:279476428ecf 85 pin = pin * 10 + pin2;
mosi 7:279476428ecf 86 }
mosi 7:279476428ecf 87 if (pin < 5 || pin > 30) {
mosi 7:279476428ecf 88 return NC;
mosi 7:279476428ecf 89 }
mosi 7:279476428ecf 90 return pin_names[pin - 5];
mosi 7:279476428ecf 91 #elif defined(TARGET_LPC4088)
mosi 7:279476428ecf 92 } else if (str[0] == 'p') { // pn
mosi 7:279476428ecf 93 uint32_t pin = str[1] - '0'; // pn
mosi 7:279476428ecf 94 uint32_t pin2 = str[2] - '0'; // pnn
mosi 7:279476428ecf 95 if (pin2 <= 9) {
mosi 7:279476428ecf 96 pin = pin * 10 + pin2;
mosi 7:279476428ecf 97 }
mosi 7:279476428ecf 98 if (pin < 5 || pin > 39) {
mosi 7:279476428ecf 99 return NC;
mosi 7:279476428ecf 100 }
mosi 7:279476428ecf 101 return pin_names[pin - 5];
mosi 7:279476428ecf 102 //#elif defined(TARGET_STM32F4XX) || defined(TARGET_STM32F1XX)
mosi 7:279476428ecf 103 // TODO: implement pin names specific to STM32 platform here
mosi 7:279476428ecf 104 #endif
mosi 7:279476428ecf 105
mosi 7:279476428ecf 106 } else if (str[0] == 'L') { // LEDn
mosi 7:279476428ecf 107 switch (str[3]) {
mosi 7:279476428ecf 108 case '1' : return LED1;
mosi 7:279476428ecf 109 case '2' : return LED2;
mosi 7:279476428ecf 110 case '3' : return LED3;
mosi 7:279476428ecf 111 case '4' : return LED4;
mosi 7:279476428ecf 112 }
mosi 7:279476428ecf 113
mosi 7:279476428ecf 114 } else if (str[0] == 'U') { // USB?X
mosi 7:279476428ecf 115 switch (str[3]) {
mosi 7:279476428ecf 116 case 'T' : return USBTX;
mosi 7:279476428ecf 117 case 'R' : return USBRX;
mosi 7:279476428ecf 118 }
mosi 7:279476428ecf 119 }
mosi 7:279476428ecf 120
mosi 7:279476428ecf 121 return NC;
mosi 7:279476428ecf 122 }
mosi 7:279476428ecf 123
mosi 7:279476428ecf 124 }