mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/gpio_api.c@181:57724642e740, 2018-02-16 (annotated)
- Committer:
- AnnaBridge
- Date:
- Fri Feb 16 16:09:33 2018 +0000
- Revision:
- 181:57724642e740
- Parent:
- targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/api/gpio_api.c@170:19eb464bc2be
mbed-dev library. Release version 159.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kojto | 170:19eb464bc2be | 1 | /* mbed Microcontroller Library |
Kojto | 170:19eb464bc2be | 2 | * Copyright (c) 2006-2013 ARM Limited |
Kojto | 170:19eb464bc2be | 3 | * |
Kojto | 170:19eb464bc2be | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
Kojto | 170:19eb464bc2be | 5 | * you may not use this file except in compliance with the License. |
Kojto | 170:19eb464bc2be | 6 | * You may obtain a copy of the License at |
Kojto | 170:19eb464bc2be | 7 | * |
Kojto | 170:19eb464bc2be | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
Kojto | 170:19eb464bc2be | 9 | * |
Kojto | 170:19eb464bc2be | 10 | * Unless required by applicable law or agreed to in writing, software |
Kojto | 170:19eb464bc2be | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
Kojto | 170:19eb464bc2be | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
Kojto | 170:19eb464bc2be | 13 | * See the License for the specific language governing permissions and |
Kojto | 170:19eb464bc2be | 14 | * limitations under the License. |
Kojto | 170:19eb464bc2be | 15 | */ |
Kojto | 170:19eb464bc2be | 16 | #include "mbed_assert.h" |
Kojto | 170:19eb464bc2be | 17 | #include "gpio_api.h" |
Kojto | 170:19eb464bc2be | 18 | #include "pinmap.h" |
Kojto | 170:19eb464bc2be | 19 | #include "fsl_gpio.h" |
Kojto | 170:19eb464bc2be | 20 | |
Kojto | 170:19eb464bc2be | 21 | uint32_t gpio_set(PinName pin) |
Kojto | 170:19eb464bc2be | 22 | { |
Kojto | 170:19eb464bc2be | 23 | MBED_ASSERT(pin != (PinName)NC); |
Kojto | 170:19eb464bc2be | 24 | pin_function(pin, 0); |
Kojto | 170:19eb464bc2be | 25 | |
Kojto | 170:19eb464bc2be | 26 | return (1 << ((int)pin & 0x1F)); |
Kojto | 170:19eb464bc2be | 27 | } |
Kojto | 170:19eb464bc2be | 28 | |
Kojto | 170:19eb464bc2be | 29 | void gpio_init(gpio_t *obj, PinName pin) |
Kojto | 170:19eb464bc2be | 30 | { |
Kojto | 170:19eb464bc2be | 31 | obj->pin = pin; |
Kojto | 170:19eb464bc2be | 32 | if (pin == (PinName)NC) |
Kojto | 170:19eb464bc2be | 33 | return; |
Kojto | 170:19eb464bc2be | 34 | |
Kojto | 170:19eb464bc2be | 35 | pin_function(pin, 0); |
Kojto | 170:19eb464bc2be | 36 | } |
Kojto | 170:19eb464bc2be | 37 | |
Kojto | 170:19eb464bc2be | 38 | void gpio_mode(gpio_t *obj, PinMode mode) |
Kojto | 170:19eb464bc2be | 39 | { |
Kojto | 170:19eb464bc2be | 40 | pin_mode(obj->pin, mode); |
Kojto | 170:19eb464bc2be | 41 | } |
Kojto | 170:19eb464bc2be | 42 | |
Kojto | 170:19eb464bc2be | 43 | void gpio_dir(gpio_t *obj, PinDirection direction) |
Kojto | 170:19eb464bc2be | 44 | { |
Kojto | 170:19eb464bc2be | 45 | MBED_ASSERT(obj->pin != (PinName)NC); |
Kojto | 170:19eb464bc2be | 46 | uint32_t pin_number = obj->pin & 0x1F; |
Kojto | 170:19eb464bc2be | 47 | uint8_t port_number = obj->pin / 32; |
Kojto | 170:19eb464bc2be | 48 | |
Kojto | 170:19eb464bc2be | 49 | switch (direction) { |
Kojto | 170:19eb464bc2be | 50 | case PIN_INPUT: |
Kojto | 170:19eb464bc2be | 51 | GPIO->DIR[port_number] &= ~(1U << pin_number); |
Kojto | 170:19eb464bc2be | 52 | break; |
Kojto | 170:19eb464bc2be | 53 | case PIN_OUTPUT: |
Kojto | 170:19eb464bc2be | 54 | GPIO->DIR[port_number] |= (1U << pin_number); |
Kojto | 170:19eb464bc2be | 55 | break; |
Kojto | 170:19eb464bc2be | 56 | } |
Kojto | 170:19eb464bc2be | 57 | } |
Kojto | 170:19eb464bc2be | 58 | |
Kojto | 170:19eb464bc2be | 59 | void gpio_write(gpio_t *obj, int value) |
Kojto | 170:19eb464bc2be | 60 | { |
Kojto | 170:19eb464bc2be | 61 | MBED_ASSERT(obj->pin != (PinName)NC); |
Kojto | 170:19eb464bc2be | 62 | uint32_t pin_number = obj->pin & 0x1F; |
Kojto | 170:19eb464bc2be | 63 | uint8_t port_number = obj->pin / 32; |
Kojto | 170:19eb464bc2be | 64 | |
Kojto | 170:19eb464bc2be | 65 | GPIO_WritePinOutput(GPIO, port_number, pin_number, value); |
Kojto | 170:19eb464bc2be | 66 | } |
Kojto | 170:19eb464bc2be | 67 | |
Kojto | 170:19eb464bc2be | 68 | int gpio_read(gpio_t *obj) |
Kojto | 170:19eb464bc2be | 69 | { |
Kojto | 170:19eb464bc2be | 70 | MBED_ASSERT(obj->pin != (PinName)NC); |
Kojto | 170:19eb464bc2be | 71 | uint32_t pin_number = obj->pin & 0x1F; |
Kojto | 170:19eb464bc2be | 72 | uint8_t port_number = obj->pin / 32; |
Kojto | 170:19eb464bc2be | 73 | |
Kojto | 170:19eb464bc2be | 74 | return (int)GPIO_ReadPinInput(GPIO, port_number, pin_number); |
Kojto | 170:19eb464bc2be | 75 | } |