Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of OmniWheels by
parse_pins.cpp
00001 /* mbed Microcontroller Library 00002 * Copyright (c) 2006-2013 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #include "port_api.h" 00017 00018 namespace mbed { 00019 00020 PinName parse_pins(const char *str) { 00021 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) 00022 static const PinName pin_names[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 00023 , p15, p16, p17, p18, p19, p20, p21, p22, p23 00024 , p24, p25, p26, p27, p28, p29, p30}; 00025 #elif defined(TARGET_LPC1114) 00026 static const PinName pin_names[] = {dp1, dp2, dp4, dp5, dp6, dp9, dp10, dp11 00027 , dp13, dp14, dp15, dp16, dp17, dp18, dp23 00028 , dp24, dp25, dp26, dp27, dp28}; 00029 #elif defined(TARGET_LPC4088) 00030 static const PinName pin_names[] = {NC, NC, NC, NC, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 00031 , p15, p16, p17, p18, p19, p20, NC, NC, p23 00032 , p24, p25, p26, p27, p28, p29, p30, p31, p32 00033 , p33, p34, NC, NC, p37, p38, p39, NC, NC, NC, NC, NC, NC, NC}; 00034 #elif defined(TARGET_LPC4088_DM) 00035 static const PinName pin_names[] = {p1, p2, p3, p4, NC, NC, p7, p8, p9, p10, p11, p12, p13, p14 00036 , p15, p16, p17, p18, p19, p20, p21, p22, p23 00037 , p24, p25, p26, NC, NC, p29, p30, NC, NC 00038 , NC, NC, NC, NC, NC, NC, NC, NC, p41, p42, p43, p44, p45, p46}; 00039 #endif 00040 00041 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) || defined(TARGET_LPC812) || defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) || defined(TARGET_LPC1114) || defined(TARGET_RZ_A1H) || defined(TARGET_VK_RZ_A1H) 00042 if (str[0] == 'P') { // Pn_n 00043 uint32_t port = str[1] - '0'; 00044 uint32_t pin = str[3] - '0'; // Pn_n 00045 uint32_t pin2 = str[4] - '0'; // Pn_nn 00046 if (pin2 <= 9) { 00047 pin = pin * 10 + pin2; 00048 } 00049 return port_pin((PortName)port, pin); 00050 00051 #elif defined(TARGET_KL25Z) || defined(TARGET_KL27Z) || defined(TARGET_KL05Z) || defined(TARGET_KL46Z) || defined(TARGET_K22F) || defined(TARGET_K64F) 00052 if (str[0] == 'P' && str[1] == 'T') { // PTxn 00053 uint32_t port = str[2] - 'A'; 00054 uint32_t pin = str[3] - '0'; // PTxn 00055 uint32_t pin2 = str[4] - '0'; // PTxnn 00056 00057 if (pin2 <= 9) { 00058 pin = pin * 10 + pin2; 00059 } 00060 return port_pin((PortName)port, pin); 00061 00062 #elif defined(TARGET_NUCLEO_F072RB) || defined(TARGET_NUCLEO_F303K8) || defined(TARGET_NUCLEO_F411RE) 00063 if (str[0] == 'P') { // PX_XX e.g.PA_2 PC_15 00064 uint32_t port = str[1] - 'A'; 00065 uint32_t pin = str[3] - '0'; 00066 uint32_t pin2 = str[4] - '0'; 00067 00068 if (pin2 <= 9) { 00069 pin = pin * 10 + pin2; 00070 } 00071 return port_pin((PortName)port, pin); 00072 00073 #endif 00074 00075 00076 00077 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) 00078 } else if (str[0] == 'p') { // pn 00079 uint32_t pin = str[1] - '0'; // pn 00080 uint32_t pin2 = str[2] - '0'; // pnn 00081 if (pin2 <= 9) { 00082 pin = pin * 10 + pin2; 00083 } 00084 if (pin < 5 || pin > 30) { 00085 return NC; 00086 } 00087 return pin_names[pin - 5]; 00088 #elif defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) 00089 } else if (str[0] == 'p') { // pn 00090 uint32_t pin = str[1] - '0'; // pn 00091 uint32_t pin2 = str[2] - '0'; // pnn 00092 if (pin2 <= 9) { 00093 pin = pin * 10 + pin2; 00094 } 00095 if (pin < 1 || pin > 46) { 00096 return NC; 00097 } 00098 return pin_names[pin - 1]; 00099 #endif 00100 } else if (str[0] == 'L') { // LEDn 00101 switch (str[3]) { 00102 case '1' : return LED1; 00103 case '2' : return LED2; 00104 case '3' : return LED3; 00105 case '4' : return LED4; 00106 } 00107 00108 } else if (str[0] == 'U') { // USB?X 00109 switch (str[3]) { 00110 case 'T' : return USBTX; 00111 case 'R' : return USBRX; 00112 } 00113 } 00114 00115 return NC; 00116 } 00117 } 00118 00119
Generated on Fri Jul 22 2022 04:53:58 by
