siva surendar / mbed-dev

Fork of mbed-dev by mbed official

Committer:
sivasuren
Date:
Fri Nov 25 07:57:40 2016 +0000
Revision:
150:da61ba4e9755
Parent:
149:156823d33999
surendar changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 121:7f86b4238bec 1 /* mbed Microcontroller Library
mbed_official 121:7f86b4238bec 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 121:7f86b4238bec 3 *
mbed_official 121:7f86b4238bec 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 121:7f86b4238bec 5 * you may not use this file except in compliance with the License.
mbed_official 121:7f86b4238bec 6 * You may obtain a copy of the License at
mbed_official 121:7f86b4238bec 7 *
mbed_official 121:7f86b4238bec 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 121:7f86b4238bec 9 *
mbed_official 121:7f86b4238bec 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 121:7f86b4238bec 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 121:7f86b4238bec 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 121:7f86b4238bec 13 * See the License for the specific language governing permissions and
mbed_official 121:7f86b4238bec 14 * limitations under the License.
mbed_official 121:7f86b4238bec 15 */
mbed_official 121:7f86b4238bec 16 #include "mbed_assert.h"
mbed_official 121:7f86b4238bec 17 #include "pinmap.h"
mbed_official 121:7f86b4238bec 18 #include "mbed_error.h"
mbed_official 121:7f86b4238bec 19 #include "fsl_port.h"
mbed_official 121:7f86b4238bec 20
mbed_official 121:7f86b4238bec 21 /* Array of PORT peripheral base address. */
mbed_official 121:7f86b4238bec 22 static PORT_Type *const port_addrs[] = PORT_BASE_PTRS;
mbed_official 121:7f86b4238bec 23
mbed_official 121:7f86b4238bec 24 void pin_function(PinName pin, int function) {
mbed_official 121:7f86b4238bec 25 MBED_ASSERT(pin != (PinName)NC);
mbed_official 121:7f86b4238bec 26 clock_ip_name_t port_clocks[] = PORT_CLOCKS;
mbed_official 121:7f86b4238bec 27
mbed_official 121:7f86b4238bec 28 CLOCK_EnableClock(port_clocks[pin >> GPIO_PORT_SHIFT]);
mbed_official 121:7f86b4238bec 29
mbed_official 121:7f86b4238bec 30 PORT_SetPinMux(port_addrs[pin >> GPIO_PORT_SHIFT], pin & 0xFF, (port_mux_t)function);
mbed_official 121:7f86b4238bec 31 }
mbed_official 121:7f86b4238bec 32
mbed_official 121:7f86b4238bec 33 void pin_mode(PinName pin, PinMode mode) {
mbed_official 121:7f86b4238bec 34 MBED_ASSERT(pin != (PinName)NC);
mbed_official 121:7f86b4238bec 35 uint32_t instance = pin >> GPIO_PORT_SHIFT;
mbed_official 121:7f86b4238bec 36 uint32_t pinName = pin & 0xFF;
mbed_official 121:7f86b4238bec 37 PORT_Type *base = port_addrs[instance];
mbed_official 121:7f86b4238bec 38 uint32_t reg = base->PCR[pinName];
mbed_official 121:7f86b4238bec 39
mbed_official 121:7f86b4238bec 40 switch (mode) {
mbed_official 121:7f86b4238bec 41 case PullNone:
mbed_official 121:7f86b4238bec 42 /* Write 0 to the PE, PS and ISF bits */
mbed_official 121:7f86b4238bec 43 reg &= ~(PORT_PCR_PE_MASK | PORT_PCR_PS_MASK | PORT_PCR_ISF_MASK);
mbed_official 121:7f86b4238bec 44 break;
mbed_official 121:7f86b4238bec 45 case PullDown:
mbed_official 121:7f86b4238bec 46 /* Write 0 to PS and ISF bits and 1 to the PE bit to enable the pull configuration */
mbed_official 121:7f86b4238bec 47 reg &= ~(PORT_PCR_PS_MASK | PORT_PCR_ISF_MASK);
mbed_official 121:7f86b4238bec 48 reg |= PORT_PCR_PE_MASK;
mbed_official 121:7f86b4238bec 49 break;
mbed_official 121:7f86b4238bec 50 case PullUp:
mbed_official 121:7f86b4238bec 51 /* Write 0 ISF bit, 1 to the PE & PS bits to enable the pull up configuration */
mbed_official 121:7f86b4238bec 52 reg &= ~(PORT_PCR_ISF_MASK);
mbed_official 121:7f86b4238bec 53 reg |= (PORT_PCR_PE_MASK | PORT_PCR_PS_MASK);
mbed_official 121:7f86b4238bec 54 break;
mbed_official 121:7f86b4238bec 55 default:
mbed_official 121:7f86b4238bec 56 break;
mbed_official 121:7f86b4238bec 57 }
mbed_official 121:7f86b4238bec 58
mbed_official 121:7f86b4238bec 59 base->PCR[pinName] = reg;
mbed_official 121:7f86b4238bec 60 }