Alessandro Angelino / mbed-hal

Dependencies:   target-freescale

Fork of mbed-hal by Morpheus

Committer:
Alessandro Angelino
Date:
Mon Apr 04 14:24:07 2016 +0100
Revision:
4:473d4af53300
Parent:
0:9c59db1fbc9e
Fix function to get sp when in unprivileged mode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:9c59db1fbc9e 1 /* mbed Microcontroller Library
screamer 0:9c59db1fbc9e 2 * Copyright (c) 2006-2013 ARM Limited
screamer 0:9c59db1fbc9e 3 *
screamer 0:9c59db1fbc9e 4 * Licensed under the Apache License, Version 2.0 (the "License");
screamer 0:9c59db1fbc9e 5 * you may not use this file except in compliance with the License.
screamer 0:9c59db1fbc9e 6 * You may obtain a copy of the License at
screamer 0:9c59db1fbc9e 7 *
screamer 0:9c59db1fbc9e 8 * http://www.apache.org/licenses/LICENSE-2.0
screamer 0:9c59db1fbc9e 9 *
screamer 0:9c59db1fbc9e 10 * Unless required by applicable law or agreed to in writing, software
screamer 0:9c59db1fbc9e 11 * distributed under the License is distributed on an "AS IS" BASIS,
screamer 0:9c59db1fbc9e 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
screamer 0:9c59db1fbc9e 13 * See the License for the specific language governing permissions and
screamer 0:9c59db1fbc9e 14 * limitations under the License.
screamer 0:9c59db1fbc9e 15 */
screamer 0:9c59db1fbc9e 16 #include "gpio_api.h"
screamer 0:9c59db1fbc9e 17
screamer 0:9c59db1fbc9e 18 static inline void _gpio_init_in(gpio_t* gpio, PinName pin, PinMode mode)
screamer 0:9c59db1fbc9e 19 {
screamer 0:9c59db1fbc9e 20 gpio_init(gpio, pin);
screamer 0:9c59db1fbc9e 21 if (pin != NC) {
screamer 0:9c59db1fbc9e 22 gpio_dir(gpio, PIN_INPUT);
screamer 0:9c59db1fbc9e 23 gpio_mode(gpio, mode);
screamer 0:9c59db1fbc9e 24 }
screamer 0:9c59db1fbc9e 25 }
screamer 0:9c59db1fbc9e 26
screamer 0:9c59db1fbc9e 27 static inline void _gpio_init_out(gpio_t* gpio, PinName pin, PinMode mode, int value)
screamer 0:9c59db1fbc9e 28 {
screamer 0:9c59db1fbc9e 29 gpio_init(gpio, pin);
screamer 0:9c59db1fbc9e 30 if (pin != NC) {
screamer 0:9c59db1fbc9e 31 gpio_write(gpio, value);
screamer 0:9c59db1fbc9e 32 gpio_dir(gpio, PIN_OUTPUT);
screamer 0:9c59db1fbc9e 33 gpio_mode(gpio, mode);
screamer 0:9c59db1fbc9e 34 }
screamer 0:9c59db1fbc9e 35 }
screamer 0:9c59db1fbc9e 36
screamer 0:9c59db1fbc9e 37 void gpio_init_in(gpio_t* gpio, PinName pin) {
screamer 0:9c59db1fbc9e 38 gpio_init_in_ex(gpio, pin, PullDefault);
screamer 0:9c59db1fbc9e 39 }
screamer 0:9c59db1fbc9e 40
screamer 0:9c59db1fbc9e 41 void gpio_init_in_ex(gpio_t* gpio, PinName pin, PinMode mode) {
screamer 0:9c59db1fbc9e 42 _gpio_init_in(gpio, pin, mode);
screamer 0:9c59db1fbc9e 43 }
screamer 0:9c59db1fbc9e 44
screamer 0:9c59db1fbc9e 45 void gpio_init_out(gpio_t* gpio, PinName pin) {
screamer 0:9c59db1fbc9e 46 gpio_init_out_ex(gpio, pin, 0);
screamer 0:9c59db1fbc9e 47 }
screamer 0:9c59db1fbc9e 48
screamer 0:9c59db1fbc9e 49 void gpio_init_out_ex(gpio_t* gpio, PinName pin, int value) {
screamer 0:9c59db1fbc9e 50 _gpio_init_out(gpio, pin, PullNone, value);
screamer 0:9c59db1fbc9e 51 }
screamer 0:9c59db1fbc9e 52
screamer 0:9c59db1fbc9e 53 void gpio_init_inout(gpio_t* gpio, PinName pin, PinDirection direction, PinMode mode, int value) {
screamer 0:9c59db1fbc9e 54 if (direction == PIN_INPUT) {
screamer 0:9c59db1fbc9e 55 _gpio_init_in(gpio, pin, mode);
screamer 0:9c59db1fbc9e 56 if (pin != NC)
screamer 0:9c59db1fbc9e 57 gpio_write(gpio, value); // we prepare the value in case it is switched later
screamer 0:9c59db1fbc9e 58 } else {
screamer 0:9c59db1fbc9e 59 _gpio_init_out(gpio, pin, mode, value);
screamer 0:9c59db1fbc9e 60 }
screamer 0:9c59db1fbc9e 61 }
screamer 0:9c59db1fbc9e 62