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 188:bcfe06ba3d64 1 /*
AnnaBridge 188:bcfe06ba3d64 2 * mbed Microcontroller Library
AnnaBridge 188:bcfe06ba3d64 3 * Copyright (c) 2017-2018 Future Electronics
AnnaBridge 188:bcfe06ba3d64 4 *
AnnaBridge 188:bcfe06ba3d64 5 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 188:bcfe06ba3d64 6 * you may not use this file except in compliance with the License.
AnnaBridge 188:bcfe06ba3d64 7 * You may obtain a copy of the License at
AnnaBridge 188:bcfe06ba3d64 8 *
AnnaBridge 188:bcfe06ba3d64 9 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 188:bcfe06ba3d64 10 *
AnnaBridge 188:bcfe06ba3d64 11 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 188:bcfe06ba3d64 12 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 188:bcfe06ba3d64 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 188:bcfe06ba3d64 14 * See the License for the specific language governing permissions and
AnnaBridge 188:bcfe06ba3d64 15 * limitations under the License.
AnnaBridge 188:bcfe06ba3d64 16 */
AnnaBridge 188:bcfe06ba3d64 17
AnnaBridge 188:bcfe06ba3d64 18 #ifndef MBED_PINNAMESTYPES_H
AnnaBridge 188:bcfe06ba3d64 19 #define MBED_PINNAMESTYPES_H
AnnaBridge 188:bcfe06ba3d64 20
AnnaBridge 188:bcfe06ba3d64 21 #include "cmsis.h"
AnnaBridge 188:bcfe06ba3d64 22
AnnaBridge 188:bcfe06ba3d64 23 typedef enum {
AnnaBridge 188:bcfe06ba3d64 24 PIN_INPUT = 0,
AnnaBridge 188:bcfe06ba3d64 25 PIN_OUTPUT
AnnaBridge 188:bcfe06ba3d64 26 } PinDirection;
AnnaBridge 188:bcfe06ba3d64 27
AnnaBridge 188:bcfe06ba3d64 28 typedef enum {
AnnaBridge 188:bcfe06ba3d64 29 PullNone = 0,
AnnaBridge 188:bcfe06ba3d64 30 PullUp = 1,
AnnaBridge 188:bcfe06ba3d64 31 PullDown = 2,
AnnaBridge 188:bcfe06ba3d64 32 OpenDrainDriveLow = 3,
AnnaBridge 188:bcfe06ba3d64 33 OpenDrainDriveHigh = 4,
AnnaBridge 188:bcfe06ba3d64 34 OpenDrain = OpenDrainDriveLow,
AnnaBridge 188:bcfe06ba3d64 35 PushPull = 5,
AnnaBridge 188:bcfe06ba3d64 36 AnalogMode = 6,
AnnaBridge 188:bcfe06ba3d64 37 PullDefault = PullNone
AnnaBridge 188:bcfe06ba3d64 38 } PinMode;
AnnaBridge 188:bcfe06ba3d64 39
AnnaBridge 188:bcfe06ba3d64 40 typedef struct {
AnnaBridge 188:bcfe06ba3d64 41 en_hsiom_sel_t hsiom : 8;
AnnaBridge 188:bcfe06ba3d64 42 en_clk_dst_t clock : 8;
AnnaBridge 188:bcfe06ba3d64 43 PinMode mode : 4;
AnnaBridge 188:bcfe06ba3d64 44 PinDirection dir : 1;
AnnaBridge 188:bcfe06ba3d64 45 } PinFunction;
AnnaBridge 188:bcfe06ba3d64 46
AnnaBridge 188:bcfe06ba3d64 47 // Encode pin function.
AnnaBridge 188:bcfe06ba3d64 48 // Output function
AnnaBridge 188:bcfe06ba3d64 49 #define CY_PIN_FUNCTION(hsiom, clock, mode, dir) (int)(((dir) << 20) | ((mode) << 16) | ((clock) << 8) | (hsiom))
AnnaBridge 188:bcfe06ba3d64 50 #define CY_PIN_OUT_FUNCTION(hsiom, clock) CY_PIN_FUNCTION(hsiom, clock, PushPull, PIN_OUTPUT)
AnnaBridge 188:bcfe06ba3d64 51 #define CY_PIN_OD_FUNCTION(hsiom, clock) CY_PIN_FUNCTION(hsiom, clock, OpenDrain, PIN_OUTPUT)
AnnaBridge 188:bcfe06ba3d64 52 #define CY_PIN_IN_FUNCTION(hsiom, clock) CY_PIN_FUNCTION(hsiom, clock, PullDefault, PIN_INPUT)
AnnaBridge 188:bcfe06ba3d64 53 #define CY_PIN_PULLUP_FUNCTION(hsiom, clock) CY_PIN_FUNCTION(hsiom, clock, PullUp, PIN_INPUT)
AnnaBridge 188:bcfe06ba3d64 54 #define CY_PIN_ANALOG_FUNCTION(clock) CY_PIN_FUNCTION(HSIOM_SEL_GPIO, clock, AnalogMode, 0)
AnnaBridge 188:bcfe06ba3d64 55
AnnaBridge 188:bcfe06ba3d64 56 // Create unique name to force 32-bit PWM usage on a pin.
AnnaBridge 188:bcfe06ba3d64 57 #define CY_PIN_FORCE_PWM_32(pin) ((uint32_t)(pin) + 0x8000)
AnnaBridge 188:bcfe06ba3d64 58
AnnaBridge 188:bcfe06ba3d64 59 static inline en_hsiom_sel_t CY_PIN_HSIOM(int function)
AnnaBridge 188:bcfe06ba3d64 60 {
AnnaBridge 188:bcfe06ba3d64 61 return (en_hsiom_sel_t)(function & 0xFF);
AnnaBridge 188:bcfe06ba3d64 62 }
AnnaBridge 188:bcfe06ba3d64 63
AnnaBridge 188:bcfe06ba3d64 64 static inline en_clk_dst_t CY_PIN_CLOCK(int function)
AnnaBridge 188:bcfe06ba3d64 65 {
AnnaBridge 188:bcfe06ba3d64 66 return (en_clk_dst_t)((function >> 8) & 0xFF);
AnnaBridge 188:bcfe06ba3d64 67 }
AnnaBridge 188:bcfe06ba3d64 68
AnnaBridge 188:bcfe06ba3d64 69 static inline PinMode CY_PIN_MODE(int function)
AnnaBridge 188:bcfe06ba3d64 70 {
AnnaBridge 188:bcfe06ba3d64 71 return (PinMode)((function >> 16) & 0x0F);
AnnaBridge 188:bcfe06ba3d64 72 }
AnnaBridge 188:bcfe06ba3d64 73
AnnaBridge 188:bcfe06ba3d64 74 static inline PinDirection CY_PIN_DIRECTION(int function)
AnnaBridge 188:bcfe06ba3d64 75 {
AnnaBridge 188:bcfe06ba3d64 76 return (PinDirection)((function >> 20) & 1);
AnnaBridge 188:bcfe06ba3d64 77 }
AnnaBridge 188:bcfe06ba3d64 78
AnnaBridge 188:bcfe06ba3d64 79 static inline int CY_PERIPHERAL_BASE(int peripheral)
AnnaBridge 188:bcfe06ba3d64 80 {
AnnaBridge 188:bcfe06ba3d64 81 return peripheral & 0xffff0000;
AnnaBridge 188:bcfe06ba3d64 82 }
AnnaBridge 188:bcfe06ba3d64 83
AnnaBridge 188:bcfe06ba3d64 84 #endif