mbed libraries for KL25Z

Dependents:   FRDM_RGBLED

gpio_api.h

Committer:
emilmont
Date:
2012-10-23
Revision:
7:73c5efe92a6c
Parent:
6:0d4e7384bff6
Child:
8:c14af7958ef5

File content as of revision 7:73c5efe92a6c:

/* mbed Microcontroller Library - gpio_api
 * Copyright (c) 2009-2011 ARM Limited. All rights reserved.
 */
#ifndef MBED_GPIO_API_H
#define MBED_GPIO_API_H

#include "PinNames.h"

#ifdef __cplusplus
extern "C" {
#endif

/* This version of the gpio API caches the gpio register pointer and the pin mask */
typedef struct {
    PinName  pin;
    uint32_t mask;
    
    __IO uint32_t *reg_dir;
    __IO uint32_t *reg_set;
    __IO uint32_t *reg_clr;
    __I  uint32_t *reg_in;
} gpio_object;

/* Set the given pin as GPIO
 * @param pin The pin to be set as GPIO
 * @return The GPIO port mask for this pin
 **/
uint32_t gpio_set (PinName pin);

/* GPIO object */
void gpio_init(gpio_object *obj, PinName pin, PinDirection direction);
void gpio_mode(gpio_object *obj, PinMode mode);
void gpio_dir (gpio_object *obj, PinDirection direction);

static inline void gpio_write(gpio_object *obj, int value) {
    if (value)
        *obj->reg_set = obj->mask;
    else
        *obj->reg_clr = obj->mask;
}

static inline int gpio_read(gpio_object *obj) {
    return ((*obj->reg_in & obj->mask) ? 1 : 0);
}

#ifdef __cplusplus
}
#endif

#endif