mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
188:bcfe06ba3d64
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:7d866c31b3c5 1 /* mbed Microcontroller Library
AnnaBridge 172:7d866c31b3c5 2 * Copyright (c) 2015-2016 Nuvoton
AnnaBridge 172:7d866c31b3c5 3 *
AnnaBridge 172:7d866c31b3c5 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 172:7d866c31b3c5 5 * you may not use this file except in compliance with the License.
AnnaBridge 172:7d866c31b3c5 6 * You may obtain a copy of the License at
AnnaBridge 172:7d866c31b3c5 7 *
AnnaBridge 172:7d866c31b3c5 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 172:7d866c31b3c5 9 *
AnnaBridge 172:7d866c31b3c5 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 172:7d866c31b3c5 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 172:7d866c31b3c5 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 172:7d866c31b3c5 13 * See the License for the specific language governing permissions and
AnnaBridge 172:7d866c31b3c5 14 * limitations under the License.
AnnaBridge 172:7d866c31b3c5 15 */
AnnaBridge 172:7d866c31b3c5 16 #ifndef MBED_PINNAMES_H
AnnaBridge 172:7d866c31b3c5 17 #define MBED_PINNAMES_H
AnnaBridge 172:7d866c31b3c5 18
AnnaBridge 172:7d866c31b3c5 19 #include "cmsis.h"
AnnaBridge 172:7d866c31b3c5 20
AnnaBridge 172:7d866c31b3c5 21 #ifdef __cplusplus
AnnaBridge 172:7d866c31b3c5 22 extern "C" {
AnnaBridge 172:7d866c31b3c5 23 #endif
AnnaBridge 172:7d866c31b3c5 24
AnnaBridge 172:7d866c31b3c5 25 #define NU_PININDEX_Pos 0
AnnaBridge 172:7d866c31b3c5 26 #define NU_PININDEX_Msk (0xFFul << NU_PININDEX_Pos)
AnnaBridge 172:7d866c31b3c5 27 #define NU_PINPORT_Pos 8
AnnaBridge 172:7d866c31b3c5 28 #define NU_PINPORT_Msk (0xFul << NU_PINPORT_Pos)
AnnaBridge 172:7d866c31b3c5 29 #define NU_PIN_MODINDEX_Pos 12
AnnaBridge 172:7d866c31b3c5 30 #define NU_PIN_MODINDEX_Msk (0xFul << NU_PIN_MODINDEX_Pos)
AnnaBridge 172:7d866c31b3c5 31 #define NU_PIN_BIND_Pos 16
AnnaBridge 172:7d866c31b3c5 32 #define NU_PIN_BIND_Msk (0x1ul << NU_PIN_BIND_Pos)
AnnaBridge 172:7d866c31b3c5 33
AnnaBridge 172:7d866c31b3c5 34 #define NU_PININDEX(PINNAME) (((unsigned int)(PINNAME) & NU_PININDEX_Msk) >> NU_PININDEX_Pos)
AnnaBridge 172:7d866c31b3c5 35 #define NU_PINPORT(PINNAME) (((unsigned int)(PINNAME) & NU_PINPORT_Msk) >> NU_PINPORT_Pos)
AnnaBridge 172:7d866c31b3c5 36 #define NU_PIN_BIND(PINNAME) (((unsigned int)(PINNAME) & NU_PIN_BIND_Msk) >> NU_PIN_BIND_Pos)
AnnaBridge 172:7d866c31b3c5 37 #define NU_PIN_MODINDEX(PINNAME) (((unsigned int)(PINNAME) & NU_PIN_MODINDEX_Msk) >> NU_PIN_MODINDEX_Pos)
AnnaBridge 172:7d866c31b3c5 38 #define NU_PINNAME(PORT, PIN) ((((unsigned int) (PORT)) << (NU_PINPORT_Pos)) | (((unsigned int) (PIN)) << NU_PININDEX_Pos))
AnnaBridge 172:7d866c31b3c5 39 #define NU_PINNAME_BIND(PINNAME, modname) ((PinName) NU_PINNAME_BIND_(NU_PINPORT(PINNAME), NU_PININDEX(PINNAME), modname))
AnnaBridge 172:7d866c31b3c5 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 172:7d866c31b3c5 41
AnnaBridge 172:7d866c31b3c5 42 #define NU_PORT_BASE(PORT) ((GPIO_T *)(((uint32_t) GPIOA_BASE) + 0x40 * PORT))
AnnaBridge 172:7d866c31b3c5 43 #define NU_MFP_POS(PIN) ((PIN % 8) * 4)
AnnaBridge 172:7d866c31b3c5 44 #define NU_MFP_MSK(PIN) (0xful << NU_MFP_POS(PIN))
AnnaBridge 172:7d866c31b3c5 45
AnnaBridge 172:7d866c31b3c5 46 // LEGACY
AnnaBridge 172:7d866c31b3c5 47 #define NU_PINNAME_TO_PIN(PINNAME) NU_PININDEX(PINNAME)
AnnaBridge 172:7d866c31b3c5 48 #define NU_PINNAME_TO_PORT(PINNAME) NU_PINPORT(PINNAME)
AnnaBridge 172:7d866c31b3c5 49 #define NU_PINNAME_TO_MODSUBINDEX(PINNAME) NU_PIN_MODINDEX(PINNAME)
AnnaBridge 172:7d866c31b3c5 50 #define NU_PORT_N_PIN_TO_PINNAME(PORT, PIN) NU_PINNAME((PORT), (PIN))
AnnaBridge 172:7d866c31b3c5 51
AnnaBridge 172:7d866c31b3c5 52 typedef enum {
AnnaBridge 172:7d866c31b3c5 53 PIN_INPUT,
AnnaBridge 172:7d866c31b3c5 54 PIN_OUTPUT
AnnaBridge 172:7d866c31b3c5 55 } PinDirection;
AnnaBridge 172:7d866c31b3c5 56
AnnaBridge 172:7d866c31b3c5 57 typedef enum {
AnnaBridge 188:bcfe06ba3d64 58 /* Input pull mode */
AnnaBridge 172:7d866c31b3c5 59 PullNone = 0,
AnnaBridge 172:7d866c31b3c5 60 PullDown,
AnnaBridge 172:7d866c31b3c5 61 PullUp,
AnnaBridge 172:7d866c31b3c5 62
AnnaBridge 188:bcfe06ba3d64 63 /* I/O mode */
AnnaBridge 188:bcfe06ba3d64 64 InputOnly,
AnnaBridge 188:bcfe06ba3d64 65 PushPullOutput,
AnnaBridge 172:7d866c31b3c5 66 OpenDrain,
AnnaBridge 188:bcfe06ba3d64 67 QuasiBidirectional,
AnnaBridge 172:7d866c31b3c5 68
AnnaBridge 188:bcfe06ba3d64 69 /* Default input pull mode */
AnnaBridge 188:bcfe06ba3d64 70 PullDefault = PullUp
AnnaBridge 172:7d866c31b3c5 71 } PinMode;
AnnaBridge 172:7d866c31b3c5 72
AnnaBridge 172:7d866c31b3c5 73 typedef enum {
AnnaBridge 172:7d866c31b3c5 74 // Not connected
AnnaBridge 172:7d866c31b3c5 75 NC = (int)0xFFFFFFFF,
AnnaBridge 172:7d866c31b3c5 76
AnnaBridge 172:7d866c31b3c5 77 // Generic naming
AnnaBridge 172:7d866c31b3c5 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 172:7d866c31b3c5 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 172:7d866c31b3c5 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,
AnnaBridge 172:7d866c31b3c5 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,
AnnaBridge 172:7d866c31b3c5 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, PE_15,
AnnaBridge 172:7d866c31b3c5 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, PF_8, PF_9, PF_10, PF_11,
AnnaBridge 172:7d866c31b3c5 84 PG_0 = NU_PORT_N_PIN_TO_PINNAME(6, 0), PG_1, PG_2, PG_3, PG_4, PG_5, PG_6, PG_7, PG_8, PG_9, PG_10, PG_11, PG_12, PG_13, PG_14, PG_15,
AnnaBridge 172:7d866c31b3c5 85 PH_0 = NU_PORT_N_PIN_TO_PINNAME(7, 0), PH_1, PH_2, PH_3, PH_4, PH_5, PH_6, PH_7, PH_8, PH_9, PH_10, PH_11,
AnnaBridge 172:7d866c31b3c5 86
AnnaBridge 172:7d866c31b3c5 87 // Arduino UNO naming
AnnaBridge 172:7d866c31b3c5 88 A0 = PB_6,
AnnaBridge 172:7d866c31b3c5 89 A1 = PB_7,
AnnaBridge 172:7d866c31b3c5 90 A2 = PB_8,
AnnaBridge 184:08ed48f1de7f 91 A3 = PB_9,
AnnaBridge 184:08ed48f1de7f 92 A4 = PB_0,
AnnaBridge 184:08ed48f1de7f 93 A5 = PB_1,
AnnaBridge 172:7d866c31b3c5 94
AnnaBridge 184:08ed48f1de7f 95 D0 = PB_2,
AnnaBridge 184:08ed48f1de7f 96 D1 = PB_3,
AnnaBridge 184:08ed48f1de7f 97 D2 = PC_9,
AnnaBridge 184:08ed48f1de7f 98 D3 = PC_10,
AnnaBridge 184:08ed48f1de7f 99 D4 = PC_11,
AnnaBridge 184:08ed48f1de7f 100 D5 = PC_12,
AnnaBridge 184:08ed48f1de7f 101 D6 = PE_4,
AnnaBridge 184:08ed48f1de7f 102 D7 = PE_5,
AnnaBridge 172:7d866c31b3c5 103 D8 = PA_5,
AnnaBridge 172:7d866c31b3c5 104 D9 = PA_4,
AnnaBridge 172:7d866c31b3c5 105 D10 = PA_3,
AnnaBridge 172:7d866c31b3c5 106 D11 = PA_0,
AnnaBridge 172:7d866c31b3c5 107 D12 = PA_1,
AnnaBridge 172:7d866c31b3c5 108 D13 = PA_2,
AnnaBridge 184:08ed48f1de7f 109 D14 = PG_1,
AnnaBridge 184:08ed48f1de7f 110 D15 = PG_0,
AnnaBridge 172:7d866c31b3c5 111
AnnaBridge 182:a56a73fd2a6f 112 I2C_SCL = D15,
AnnaBridge 182:a56a73fd2a6f 113 I2C_SDA = D14,
AnnaBridge 182:a56a73fd2a6f 114
AnnaBridge 172:7d866c31b3c5 115 // Note: board-specific
AnnaBridge 172:7d866c31b3c5 116 // UART naming
AnnaBridge 184:08ed48f1de7f 117 USBTX = PB_13,
AnnaBridge 184:08ed48f1de7f 118 USBRX = PB_12,
AnnaBridge 172:7d866c31b3c5 119 STDIO_UART_TX = USBTX,
AnnaBridge 172:7d866c31b3c5 120 STDIO_UART_RX = USBRX,
AnnaBridge 182:a56a73fd2a6f 121 SERIAL_TX = USBTX,
AnnaBridge 182:a56a73fd2a6f 122 SERIAL_RX = USBRX,
AnnaBridge 172:7d866c31b3c5 123 // LED naming
AnnaBridge 172:7d866c31b3c5 124 LED_RED = PH_0,
AnnaBridge 172:7d866c31b3c5 125 LED_YELLOW = PH_1,
AnnaBridge 172:7d866c31b3c5 126 LED_GREEN = PH_2,
AnnaBridge 172:7d866c31b3c5 127 LED1 = LED_RED,
AnnaBridge 172:7d866c31b3c5 128 LED2 = LED_YELLOW,
AnnaBridge 172:7d866c31b3c5 129 LED3 = LED_GREEN,
AnnaBridge 172:7d866c31b3c5 130 LED4 = LED1, // No real LED. Just for passing ATS.
AnnaBridge 172:7d866c31b3c5 131 // Button naming
AnnaBridge 188:bcfe06ba3d64 132 #if TARGET_NUMAKER_PFM_M487
AnnaBridge 184:08ed48f1de7f 133 SW2 = PG_15,
AnnaBridge 184:08ed48f1de7f 134 SW3 = PF_11,
AnnaBridge 188:bcfe06ba3d64 135 #elif TARGET_NUMAKER_IOT_M487
AnnaBridge 188:bcfe06ba3d64 136 SW2 = PF_11,
AnnaBridge 188:bcfe06ba3d64 137 SW3 = PG_5,
AnnaBridge 188:bcfe06ba3d64 138 #endif
AnnaBridge 188:bcfe06ba3d64 139
AnnaBridge 172:7d866c31b3c5 140
AnnaBridge 172:7d866c31b3c5 141 } PinName;
AnnaBridge 172:7d866c31b3c5 142
AnnaBridge 172:7d866c31b3c5 143 #ifdef __cplusplus
AnnaBridge 172:7d866c31b3c5 144 }
AnnaBridge 172:7d866c31b3c5 145 #endif
AnnaBridge 172:7d866c31b3c5 146
AnnaBridge 172:7d866c31b3c5 147 #endif // MBED_PINNAMES_H