mbed library sources

Dependents:   frdm_kl05z_gpio_test

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Thu Sep 11 17:00:08 2014 +0100
Revision:
320:be04b2b1e3f2
Parent:
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/port_api.c@267:8673334f2cbe
Synchronized with git revision c372035d60ac16c22e1313348a9e3f47293dc6b8

Full URL: https://github.com/mbedmicro/mbed/commit/c372035d60ac16c22e1313348a9e3f47293dc6b8/

Add derivative support to K64F and updates for MTS_GAMBIT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 146:f64d43ff0c18 1 /* mbed Microcontroller Library
mbed_official 146:f64d43ff0c18 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 146:f64d43ff0c18 3 *
mbed_official 146:f64d43ff0c18 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 146:f64d43ff0c18 5 * you may not use this file except in compliance with the License.
mbed_official 146:f64d43ff0c18 6 * You may obtain a copy of the License at
mbed_official 146:f64d43ff0c18 7 *
mbed_official 146:f64d43ff0c18 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 146:f64d43ff0c18 9 *
mbed_official 146:f64d43ff0c18 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 146:f64d43ff0c18 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 146:f64d43ff0c18 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 146:f64d43ff0c18 13 * See the License for the specific language governing permissions and
mbed_official 146:f64d43ff0c18 14 * limitations under the License.
mbed_official 146:f64d43ff0c18 15 */
mbed_official 146:f64d43ff0c18 16 #include "port_api.h"
mbed_official 267:8673334f2cbe 17
mbed_official 267:8673334f2cbe 18 #if DEVICE_PORTIN || DEVICE_PORTOUT
mbed_official 267:8673334f2cbe 19
mbed_official 146:f64d43ff0c18 20 #include "pinmap.h"
mbed_official 146:f64d43ff0c18 21 #include "gpio_api.h"
mbed_official 146:f64d43ff0c18 22
mbed_official 146:f64d43ff0c18 23 PinName port_pin(PortName port, int pin_n) {
mbed_official 146:f64d43ff0c18 24 return (PinName)((port << GPIO_PORT_SHIFT) | pin_n);
mbed_official 146:f64d43ff0c18 25 }
mbed_official 146:f64d43ff0c18 26
mbed_official 146:f64d43ff0c18 27 void port_init(port_t *obj, PortName port, int mask, PinDirection dir) {
mbed_official 146:f64d43ff0c18 28 obj->port = port;
mbed_official 146:f64d43ff0c18 29 obj->mask = mask;
mbed_official 146:f64d43ff0c18 30
mbed_official 146:f64d43ff0c18 31 // The function is set per pin: reuse gpio logic
mbed_official 146:f64d43ff0c18 32 for (uint32_t i = 0; i < 32; i++) {
mbed_official 146:f64d43ff0c18 33 if (obj->mask & (1 << i)) {
mbed_official 146:f64d43ff0c18 34 gpio_set(port_pin(obj->port, i));
mbed_official 146:f64d43ff0c18 35 }
mbed_official 146:f64d43ff0c18 36 }
mbed_official 146:f64d43ff0c18 37
mbed_official 146:f64d43ff0c18 38 port_dir(obj, dir);
mbed_official 146:f64d43ff0c18 39 }
mbed_official 146:f64d43ff0c18 40
mbed_official 146:f64d43ff0c18 41 void port_mode(port_t *obj, PinMode mode) {
mbed_official 146:f64d43ff0c18 42
mbed_official 146:f64d43ff0c18 43 // The mode is set per pin: reuse pinmap logic
mbed_official 146:f64d43ff0c18 44 for (uint32_t i = 0; i < 32; i++) {
mbed_official 146:f64d43ff0c18 45 if (obj->mask & (1 << i)) {
mbed_official 146:f64d43ff0c18 46 pin_mode(port_pin(obj->port, i), mode);
mbed_official 146:f64d43ff0c18 47 }
mbed_official 146:f64d43ff0c18 48 }
mbed_official 146:f64d43ff0c18 49 }
mbed_official 146:f64d43ff0c18 50
mbed_official 146:f64d43ff0c18 51 void port_dir(port_t *obj, PinDirection dir) {
mbed_official 150:49699a7d7064 52 uint32_t direction = gpio_hal_get_port_direction((uint32_t)obj->port);
mbed_official 146:f64d43ff0c18 53 switch (dir) {
mbed_official 146:f64d43ff0c18 54 case PIN_INPUT :
mbed_official 150:49699a7d7064 55 direction &= ~obj->mask;
mbed_official 150:49699a7d7064 56 gpio_hal_set_port_direction((uint32_t)obj->port, direction);
mbed_official 146:f64d43ff0c18 57 break;
mbed_official 146:f64d43ff0c18 58 case PIN_OUTPUT:
mbed_official 150:49699a7d7064 59 direction |= obj->mask;
mbed_official 150:49699a7d7064 60 gpio_hal_set_port_direction((uint32_t)obj->port, direction);
mbed_official 146:f64d43ff0c18 61 break;
mbed_official 146:f64d43ff0c18 62 }
mbed_official 146:f64d43ff0c18 63 }
mbed_official 146:f64d43ff0c18 64
mbed_official 146:f64d43ff0c18 65 void port_write(port_t *obj, int value) {
mbed_official 150:49699a7d7064 66 uint32_t input = gpio_hal_read_port_input((uint32_t)obj->port) & ~obj->mask;
mbed_official 150:49699a7d7064 67 gpio_hal_write_port_output((uint32_t)obj->port, input | (uint32_t)(value & obj->mask));
mbed_official 146:f64d43ff0c18 68 }
mbed_official 146:f64d43ff0c18 69
mbed_official 146:f64d43ff0c18 70 int port_read(port_t *obj) {
mbed_official 146:f64d43ff0c18 71 return (int)(gpio_hal_read_port_input((uint32_t)obj->port) & obj->mask);
mbed_official 146:f64d43ff0c18 72 }
mbed_official 267:8673334f2cbe 73
mbed_official 267:8673334f2cbe 74 #endif