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