The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /* mbed Microcontroller Library
AnnaBridge 171:3a7713b1edbc 2 * Copyright (c) 2015-2016 Nuvoton
AnnaBridge 171:3a7713b1edbc 3 *
AnnaBridge 171:3a7713b1edbc 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 171:3a7713b1edbc 5 * you may not use this file except in compliance with the License.
AnnaBridge 171:3a7713b1edbc 6 * You may obtain a copy of the License at
AnnaBridge 171:3a7713b1edbc 7 *
AnnaBridge 171:3a7713b1edbc 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 171:3a7713b1edbc 9 *
AnnaBridge 171:3a7713b1edbc 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 171:3a7713b1edbc 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 171:3a7713b1edbc 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 171:3a7713b1edbc 13 * See the License for the specific language governing permissions and
AnnaBridge 171:3a7713b1edbc 14 * limitations under the License.
AnnaBridge 171:3a7713b1edbc 15 */
AnnaBridge 171:3a7713b1edbc 16 #ifndef MBED_PINNAMES_H
AnnaBridge 171:3a7713b1edbc 17 #define MBED_PINNAMES_H
AnnaBridge 171:3a7713b1edbc 18
AnnaBridge 171:3a7713b1edbc 19 #include "cmsis.h"
AnnaBridge 171:3a7713b1edbc 20
AnnaBridge 171:3a7713b1edbc 21 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 22 extern "C" {
AnnaBridge 171:3a7713b1edbc 23 #endif
AnnaBridge 171:3a7713b1edbc 24
AnnaBridge 171:3a7713b1edbc 25 #define NU_PININDEX_Pos 0
AnnaBridge 171:3a7713b1edbc 26 #define NU_PININDEX_Msk (0xFFul << NU_PININDEX_Pos)
AnnaBridge 171:3a7713b1edbc 27 #define NU_PINPORT_Pos 8
AnnaBridge 171:3a7713b1edbc 28 #define NU_PINPORT_Msk (0xFul << NU_PINPORT_Pos)
AnnaBridge 171:3a7713b1edbc 29 #define NU_PIN_MODINDEX_Pos 12
AnnaBridge 171:3a7713b1edbc 30 #define NU_PIN_MODINDEX_Msk (0xFul << NU_PIN_MODINDEX_Pos)
AnnaBridge 171:3a7713b1edbc 31 #define NU_PIN_BIND_Pos 16
AnnaBridge 171:3a7713b1edbc 32 #define NU_PIN_BIND_Msk (0x1ul << NU_PIN_BIND_Pos)
AnnaBridge 171:3a7713b1edbc 33
AnnaBridge 171:3a7713b1edbc 34 #define NU_PININDEX(PINNAME) (((unsigned int)(PINNAME) & NU_PININDEX_Msk) >> NU_PININDEX_Pos)
AnnaBridge 171:3a7713b1edbc 35 #define NU_PINPORT(PINNAME) (((unsigned int)(PINNAME) & NU_PINPORT_Msk) >> NU_PINPORT_Pos)
AnnaBridge 171:3a7713b1edbc 36 #define NU_PIN_BIND(PINNAME) (((unsigned int)(PINNAME) & NU_PIN_BIND_Msk) >> NU_PIN_BIND_Pos)
AnnaBridge 171:3a7713b1edbc 37 #define NU_PIN_MODINDEX(PINNAME) (((unsigned int)(PINNAME) & NU_PIN_MODINDEX_Msk) >> NU_PIN_MODINDEX_Pos)
AnnaBridge 171:3a7713b1edbc 38 #define NU_PINNAME(PORT, PIN) ((((unsigned int) (PORT)) << (NU_PINPORT_Pos)) | (((unsigned int) (PIN)) << NU_PININDEX_Pos))
AnnaBridge 171:3a7713b1edbc 39 #define NU_PINNAME_BIND(PINNAME, modname) NU_PINNAME_BIND_(NU_PINPORT(PINNAME), NU_PININDEX(PINNAME), modname)
AnnaBridge 171:3a7713b1edbc 40 #define NU_PINNAME_BIND_(PORT, PIN, modname) ((((unsigned int)(PORT)) << NU_PINPORT_Pos) | (((unsigned int)(PIN)) << NU_PININDEX_Pos) | (NU_MODINDEX(modname) << NU_PIN_MODINDEX_Pos) | NU_PIN_BIND_Msk)
AnnaBridge 171:3a7713b1edbc 41
AnnaBridge 171:3a7713b1edbc 42 #define NU_PORT_BASE(port) ((GPIO_T *)(((uint32_t) GPIOA_BASE) + 0x40 * port))
AnnaBridge 171:3a7713b1edbc 43 #define NU_MFP_POS(pin) ((pin % 8) * 4)
AnnaBridge 171:3a7713b1edbc 44 #define NU_MFP_MSK(pin) (0xful << NU_MFP_POS(pin))
AnnaBridge 171:3a7713b1edbc 45
AnnaBridge 171:3a7713b1edbc 46 // LEGACY
AnnaBridge 171:3a7713b1edbc 47 #define NU_PINNAME_TO_PIN(PINNAME) NU_PININDEX(PINNAME)
AnnaBridge 171:3a7713b1edbc 48 #define NU_PINNAME_TO_PORT(PINNAME) NU_PINPORT(PINNAME)
AnnaBridge 171:3a7713b1edbc 49 #define NU_PINNAME_TO_MODSUBINDEX(PINNAME) NU_PIN_MODINDEX(PINNAME)
AnnaBridge 171:3a7713b1edbc 50 #define NU_PORT_N_PIN_TO_PINNAME(PORT, PIN) NU_PINNAME((PORT), (PIN))
AnnaBridge 171:3a7713b1edbc 51
AnnaBridge 171:3a7713b1edbc 52 typedef enum {
AnnaBridge 171:3a7713b1edbc 53 PIN_INPUT,
AnnaBridge 171:3a7713b1edbc 54 PIN_OUTPUT
AnnaBridge 171:3a7713b1edbc 55 } PinDirection;
AnnaBridge 171:3a7713b1edbc 56
AnnaBridge 171:3a7713b1edbc 57 typedef enum {
AnnaBridge 171:3a7713b1edbc 58 /* Input pull mode */
AnnaBridge 171:3a7713b1edbc 59 PullNone = 0,
AnnaBridge 171:3a7713b1edbc 60 PullDown,
AnnaBridge 171:3a7713b1edbc 61 PullUp,
AnnaBridge 171:3a7713b1edbc 62
AnnaBridge 171:3a7713b1edbc 63 /* I/O mode */
AnnaBridge 171:3a7713b1edbc 64 InputOnly,
AnnaBridge 171:3a7713b1edbc 65 PushPullOutput,
AnnaBridge 171:3a7713b1edbc 66 OpenDrain,
AnnaBridge 171:3a7713b1edbc 67 QuasiBidirectional,
AnnaBridge 171:3a7713b1edbc 68
AnnaBridge 171:3a7713b1edbc 69 /* Default input pull mode */
AnnaBridge 171:3a7713b1edbc 70 PullDefault = PullUp
AnnaBridge 171:3a7713b1edbc 71 } PinMode;
AnnaBridge 171:3a7713b1edbc 72
AnnaBridge 171:3a7713b1edbc 73 typedef enum {
AnnaBridge 171:3a7713b1edbc 74 // Not connected
AnnaBridge 171:3a7713b1edbc 75 NC = (int)0xFFFFFFFF,
AnnaBridge 171:3a7713b1edbc 76
AnnaBridge 171:3a7713b1edbc 77 // Generic naming
AnnaBridge 171:3a7713b1edbc 78 PA_0 = NU_PORT_N_PIN_TO_PINNAME(0, 0), PA_1, PA_2, PA_3, PA_4, PA_5, PA_6, PA_7, PA_8, PA_9, PA_10, PA_11, PA_12, PA_13, PA_14, PA_15,
AnnaBridge 171:3a7713b1edbc 79 PB_0 = NU_PORT_N_PIN_TO_PINNAME(1, 0), PB_1, PB_2, PB_3, PB_4, PB_5, PB_6, PB_7, PB_8, PB_9, PB_10, PB_11, PB_12, PB_13, PB_14, PB_15,
AnnaBridge 171:3a7713b1edbc 80 PC_0 = NU_PORT_N_PIN_TO_PINNAME(2, 0), PC_1, PC_2, PC_3, PC_4, PC_5, PC_6, PC_7, PC_8, PC_9, PC_10, PC_11, PC_12, PC_13, PC_14, PC_15,
AnnaBridge 171:3a7713b1edbc 81 PD_0 = NU_PORT_N_PIN_TO_PINNAME(3, 0), PD_1, PD_2, PD_3, PD_4, PD_5, PD_6, PD_7, PD_8, PD_9, PD_10, PD_11, PD_12, PD_13, PD_14, PD_15,
AnnaBridge 171:3a7713b1edbc 82 PE_0 = NU_PORT_N_PIN_TO_PINNAME(4, 0), PE_1, PE_2, PE_3, PE_4, PE_5, PE_6, PE_7, PE_8, PE_9, PE_10, PE_11, PE_12, PE_13, PE_14,
AnnaBridge 171:3a7713b1edbc 83 PF_0 = NU_PORT_N_PIN_TO_PINNAME(5, 0), PF_1, PF_2, PF_3, PF_4, PF_5, PF_6, PF_7,
AnnaBridge 171:3a7713b1edbc 84
AnnaBridge 171:3a7713b1edbc 85 // Arduino UNO naming
AnnaBridge 171:3a7713b1edbc 86 A0 = PB_0,
AnnaBridge 171:3a7713b1edbc 87 A1 = PB_1,
AnnaBridge 171:3a7713b1edbc 88 A2 = PB_2,
AnnaBridge 171:3a7713b1edbc 89 A3 = PB_3,
AnnaBridge 171:3a7713b1edbc 90 A4 = PB_4,
AnnaBridge 171:3a7713b1edbc 91 A5 = PB_8,
AnnaBridge 171:3a7713b1edbc 92 A6 = PB_9,
AnnaBridge 171:3a7713b1edbc 93 A7 = PB_10,
AnnaBridge 171:3a7713b1edbc 94
AnnaBridge 171:3a7713b1edbc 95 D0 = PD_6,
AnnaBridge 171:3a7713b1edbc 96 D1 = PD_1,
AnnaBridge 171:3a7713b1edbc 97 D2 = PC_6,
AnnaBridge 171:3a7713b1edbc 98 D3 = PC_7,
AnnaBridge 171:3a7713b1edbc 99 D4 = PC_11,
AnnaBridge 171:3a7713b1edbc 100 D5 = PC_12,
AnnaBridge 171:3a7713b1edbc 101 D6 = PC_13,
AnnaBridge 171:3a7713b1edbc 102 D7 = PC_14,
AnnaBridge 171:3a7713b1edbc 103 D8 = PC_0,
AnnaBridge 171:3a7713b1edbc 104 D9 = PC_1,
AnnaBridge 171:3a7713b1edbc 105 D10 = PC_2,
AnnaBridge 171:3a7713b1edbc 106 D11 = PC_3,
AnnaBridge 171:3a7713b1edbc 107 D12 = PC_4,
AnnaBridge 171:3a7713b1edbc 108 D13 = PC_5,
AnnaBridge 171:3a7713b1edbc 109 D14 = PE_5,
AnnaBridge 171:3a7713b1edbc 110 D15 = PE_4,
AnnaBridge 171:3a7713b1edbc 111
AnnaBridge 171:3a7713b1edbc 112 I2C_SCL = D15,
AnnaBridge 171:3a7713b1edbc 113 I2C_SDA = D14,
AnnaBridge 171:3a7713b1edbc 114
AnnaBridge 171:3a7713b1edbc 115 // NOTE: board-specific naming
AnnaBridge 171:3a7713b1edbc 116 // UART naming
AnnaBridge 171:3a7713b1edbc 117 USBTX = PA_8,
AnnaBridge 171:3a7713b1edbc 118 USBRX = PA_9,
AnnaBridge 171:3a7713b1edbc 119 STDIO_UART_TX = USBTX,
AnnaBridge 171:3a7713b1edbc 120 STDIO_UART_RX = USBRX,
AnnaBridge 171:3a7713b1edbc 121 SERIAL_TX = USBTX,
AnnaBridge 171:3a7713b1edbc 122 SERIAL_RX = USBRX,
AnnaBridge 171:3a7713b1edbc 123 // LED naming
AnnaBridge 171:3a7713b1edbc 124 LED1 = PD_2,
AnnaBridge 171:3a7713b1edbc 125 LED2 = PD_3,
AnnaBridge 171:3a7713b1edbc 126 LED3 = PD_7,
AnnaBridge 171:3a7713b1edbc 127 LED4 = LED1, // No real LED. Just for passing ATS.
AnnaBridge 171:3a7713b1edbc 128 LED_RED = LED2,
AnnaBridge 171:3a7713b1edbc 129 LED_GREEN = LED3,
AnnaBridge 171:3a7713b1edbc 130 LED_BLUE = LED1,
AnnaBridge 171:3a7713b1edbc 131 // Button naming
AnnaBridge 171:3a7713b1edbc 132 SW2 = PA_15,
AnnaBridge 171:3a7713b1edbc 133 SW3 = PA_14,
AnnaBridge 171:3a7713b1edbc 134
AnnaBridge 171:3a7713b1edbc 135 } PinName;
AnnaBridge 171:3a7713b1edbc 136
AnnaBridge 171:3a7713b1edbc 137 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 138 }
AnnaBridge 171:3a7713b1edbc 139 #endif
AnnaBridge 171:3a7713b1edbc 140
AnnaBridge 171:3a7713b1edbc 141 #endif // MBED_PINNAMES_H