##// END OF EJS Templates
Huge cleanup, removed "out of dir building" now libuc contains qmake and...
Huge cleanup, removed "out of dir building" now libuc contains qmake and spec files. Libuc uses now qmake's prl file for dependecy propagation.

File last commit:

r71:608b7f0e27c2 dev_alexis
r71:608b7f0e27c2 dev_alexis
Show More
gpio.h
557 lines | 13.8 KiB | text/x-c | CLexer
/*------------------------------------------------------------------------------
-- This file is a part of the libuc, microcontroler library
-- Copyright (C) 2012, Alexis Jeandet
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------------
-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@gmail.com
-------------------------------------------------------------------------------*/
#ifndef GPIO_H
#define GPIO_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef uint32_t gpio_t;
typedef enum
{
gpiolowspeed = 0x00000,
gpiomediumspeed = 0x10000,
gpiofastspeed = 0x20000,
gpiohighspeed = 0x30000
}gpiospeed_t;
#define GPIOSPEEDMASK 0x30000
typedef enum gpiodir_t
{
gpioindir = 0x00000,
gpiooutdir = 0x40000,
gpioaf = 0x80000,
gpioan = 0xC0000
}gpiodir_t;
#define GPIODIRMASK 0xC0000
typedef enum
{
gpiopushpulltype = 0x000000,
gpioopendraintype = 0x100000
}gpioouttype_t;
#define GPIOOUTTYPEMASK 0x100000
typedef enum
{
gpionopulltype = 0x000000,
gpiopulluptype = 0x200000,
gpiopulldowntype = 0x400000
}gpiopulltype_t;
#define GPIOPULLTYPEMASK 0x600000
extern gpio_t gpioopen(uint32_t gpio);
extern void gpioclose(gpio_t gpio);
extern void gpiosetconfig(gpio_t* gpio);
extern void gpiosetdir(gpio_t* gpio,gpiodir_t dir);
extern void gpiosetouttype(gpio_t* gpio, gpioouttype_t outtype);
extern void gpiosetpulltype(gpio_t* gpio,gpiopulltype_t pulltype);
extern void gpiosetspeed(gpio_t* gpio,gpiospeed_t speed);
extern void gpioset(gpio_t gpio);
extern void gpioclr(gpio_t gpio);
extern void gpiosetval(gpio_t gpio,int val);
extern int gpiogetval(gpio_t gpio);
#define GPIOISINPUT(gpio) (((gpio) & GPIODIRMASK)==gpioindir)
#define GPIOISOUTPUT(gpio) (((gpio) & GPIOSPEEDMASK)==gpiooutdir)
#define GPIOISLOWSPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiolowspeed)
#define GPIOISMEDIUMSPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiomediumspeed)
#define GPIOISFASTPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiofastspeed)
#define GPIOISHIGHSPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiohighspeeds)
#define GPIOISPUSHPULL(gpio) (((gpio) & GPIOOUTTYPEMASK)==gpiopushpulltype)
#define GPIOISOPENDRAIN(gpio) (((gpio) & GPIOOUTTYPEMASK)==gpioopendraintype)
#define GPIOISNOPULL(GPIO) (((gpio) & GPIOPULLTYPEMASK)==gpionopulltype)
#define GPIOISPULLUP(GPIO) (((gpio) & GPIOPULLTYPEMASK)==gpiopulluptype)
#define GPIOISPULLDOWN(GPIO) (((gpio) & GPIOPULLTYPEMASK)==gpiopulldowntype)
#define PA0 ((0<<8)+0)
#define PA1 ((0<<8)+1)
#define PA2 ((0<<8)+2)
#define PA3 ((0<<8)+3)
#define PA4 ((0<<8)+4)
#define PA5 ((0<<8)+5)
#define PA6 ((0<<8)+6)
#define PA7 ((0<<8)+7)
#define PA8 ((0<<8)+8)
#define PA9 ((0<<8)+9)
#define PA10 ((0<<8)+10)
#define PA11 ((0<<8)+11)
#define PA12 ((0<<8)+12)
#define PA13 ((0<<8)+13)
#define PA14 ((0<<8)+14)
#define PA15 ((0<<8)+15)
#define PAX ((0<<8)+255)
#define PB0 ((1<<8)+0)
#define PB1 ((1<<8)+1)
#define PB2 ((1<<8)+2)
#define PB3 ((1<<8)+3)
#define PB4 ((1<<8)+4)
#define PB5 ((1<<8)+5)
#define PB6 ((1<<8)+6)
#define PB7 ((1<<8)+7)
#define PB8 ((1<<8)+8)
#define PB9 ((1<<8)+9)
#define PB10 ((1<<8)+10)
#define PB11 ((1<<8)+11)
#define PB12 ((1<<8)+12)
#define PB13 ((1<<8)+13)
#define PB14 ((1<<8)+14)
#define PB15 ((1<<8)+15)
#define PBX ((1<<8)+255)
#define PC0 ((2<<8)+0)
#define PC1 ((2<<8)+1)
#define PC2 ((2<<8)+2)
#define PC3 ((2<<8)+3)
#define PC4 ((2<<8)+4)
#define PC5 ((2<<8)+5)
#define PC6 ((2<<8)+6)
#define PC7 ((2<<8)+7)
#define PC8 ((2<<8)+8)
#define PC9 ((2<<8)+9)
#define PC10 ((2<<8)+10)
#define PC11 ((2<<8)+11)
#define PC12 ((2<<8)+12)
#define PC13 ((2<<8)+13)
#define PC14 ((2<<8)+14)
#define PC15 ((2<<8)+15)
#define PCX ((2<<8)+255)
#define PD0 ((3<<8)+0)
#define PD1 ((3<<8)+1)
#define PD2 ((3<<8)+2)
#define PD3 ((3<<8)+3)
#define PD4 ((3<<8)+4)
#define PD5 ((3<<8)+5)
#define PD6 ((3<<8)+6)
#define PD7 ((3<<8)+7)
#define PD8 ((3<<8)+8)
#define PD9 ((3<<8)+9)
#define PD10 ((3<<8)+10)
#define PD11 ((3<<8)+11)
#define PD12 ((3<<8)+12)
#define PD13 ((3<<8)+13)
#define PD14 ((3<<8)+14)
#define PD15 ((3<<8)+15)
#define PDX ((3<<8)+255)
#define PE0 ((4<<8)+0)
#define PE1 ((4<<8)+1)
#define PE2 ((4<<8)+2)
#define PE3 ((4<<8)+3)
#define PE4 ((4<<8)+4)
#define PE5 ((4<<8)+5)
#define PE6 ((4<<8)+6)
#define PE7 ((4<<8)+7)
#define PE8 ((4<<8)+8)
#define PE9 ((4<<8)+9)
#define PE10 ((4<<8)+10)
#define PE11 ((4<<8)+11)
#define PE12 ((4<<8)+12)
#define PE13 ((4<<8)+13)
#define PE14 ((4<<8)+14)
#define PE15 ((4<<8)+15)
#define PEX ((4<<8)+255)
#define PF0 ((5<<8)+0)
#define PF1 ((5<<8)+1)
#define PF2 ((5<<8)+2)
#define PF3 ((5<<8)+3)
#define PF4 ((5<<8)+4)
#define PF5 ((5<<8)+5)
#define PF6 ((5<<8)+6)
#define PF7 ((5<<8)+7)
#define PF8 ((5<<8)+8)
#define PF9 ((5<<8)+9)
#define PF10 ((5<<8)+10)
#define PF11 ((5<<8)+11)
#define PF12 ((5<<8)+12)
#define PF13 ((5<<8)+13)
#define PF14 ((5<<8)+14)
#define PF15 ((5<<8)+15)
#define PFX ((5<<8)+255)
#define PG0 ((6<<8)+0)
#define PG1 ((6<<8)+1)
#define PG2 ((6<<8)+2)
#define PG3 ((6<<8)+3)
#define PG4 ((6<<8)+4)
#define PG5 ((6<<8)+5)
#define PG6 ((6<<8)+6)
#define PG7 ((6<<8)+7)
#define PG8 ((6<<8)+8)
#define PG9 ((6<<8)+9)
#define PG10 ((6<<8)+10)
#define PG11 ((6<<8)+11)
#define PG12 ((6<<8)+12)
#define PG13 ((6<<8)+13)
#define PG14 ((6<<8)+14)
#define PG15 ((6<<8)+15)
#define PGX ((6<<8)+255)
#define PH0 ((7<<8)+0)
#define PH1 ((7<<8)+1)
#define PH2 ((7<<8)+2)
#define PH3 ((7<<8)+3)
#define PH4 ((7<<8)+4)
#define PH5 ((7<<8)+5)
#define PH6 ((7<<8)+6)
#define PH7 ((7<<8)+7)
#define PH8 ((7<<8)+8)
#define PH9 ((7<<8)+9)
#define PH10 ((7<<8)+10)
#define PH11 ((7<<8)+11)
#define PH12 ((7<<8)+12)
#define PH13 ((7<<8)+13)
#define PH14 ((7<<8)+14)
#define PH15 ((7<<8)+15)
#define PHX ((7<<8)+255)
#define PI0 ((8<<8)+0)
#define PI1 ((8<<8)+1)
#define PI2 ((8<<8)+2)
#define PI3 ((8<<8)+3)
#define PI4 ((8<<8)+4)
#define PI5 ((8<<8)+5)
#define PI6 ((8<<8)+6)
#define PI7 ((8<<8)+7)
#define PI8 ((8<<8)+8)
#define PI9 ((8<<8)+9)
#define PI10 ((8<<8)+10)
#define PI11 ((8<<8)+11)
#define PI12 ((8<<8)+12)
#define PI13 ((8<<8)+13)
#define PI14 ((8<<8)+14)
#define PI15 ((8<<8)+15)
#define PIX ((8<<8)+255)
#define PJ0 ((9<<8)+0)
#define PJ1 ((9<<8)+1)
#define PJ2 ((9<<8)+2)
#define PJ3 ((9<<8)+3)
#define PJ4 ((9<<8)+4)
#define PJ5 ((9<<8)+5)
#define PJ6 ((9<<8)+6)
#define PJ7 ((9<<8)+7)
#define PJ8 ((9<<8)+8)
#define PJ9 ((9<<8)+9)
#define PJ10 ((9<<8)+10)
#define PJ11 ((9<<8)+11)
#define PJ12 ((9<<8)+12)
#define PJ13 ((9<<8)+13)
#define PJ14 ((9<<8)+14)
#define PJ15 ((9<<8)+15)
#define PJX ((9<<8)+255)
#define PK0 ((10<<8)+0)
#define PK1 ((10<<8)+1)
#define PK2 ((10<<8)+2)
#define PK3 ((10<<8)+3)
#define PK4 ((10<<8)+4)
#define PK5 ((10<<8)+5)
#define PK6 ((10<<8)+6)
#define PK7 ((10<<8)+7)
#define PK8 ((10<<8)+8)
#define PK9 ((10<<8)+9)
#define PK10 ((10<<8)+10)
#define PK11 ((10<<8)+11)
#define PK12 ((10<<8)+12)
#define PK13 ((10<<8)+13)
#define PK14 ((10<<8)+14)
#define PK15 ((10<<8)+15)
#define PKX ((10<<8)+255)
#define PL0 ((11<<8)+0)
#define PL1 ((11<<8)+1)
#define PL2 ((11<<8)+2)
#define PL3 ((11<<8)+3)
#define PL4 ((11<<8)+4)
#define PL5 ((11<<8)+5)
#define PL6 ((11<<8)+6)
#define PL7 ((11<<8)+7)
#define PL8 ((11<<8)+8)
#define PL9 ((11<<8)+9)
#define PL10 ((11<<8)+10)
#define PL11 ((11<<8)+11)
#define PL12 ((11<<8)+12)
#define PL13 ((11<<8)+13)
#define PL14 ((11<<8)+14)
#define PL15 ((11<<8)+15)
#define PLX ((11<<8)+255)
#define PM0 ((12<<8)+0)
#define PM1 ((12<<8)+1)
#define PM2 ((12<<8)+2)
#define PM3 ((12<<8)+3)
#define PM4 ((12<<8)+4)
#define PM5 ((12<<8)+5)
#define PM6 ((12<<8)+6)
#define PM7 ((12<<8)+7)
#define PM8 ((12<<8)+8)
#define PM9 ((12<<8)+9)
#define PM10 ((12<<8)+10)
#define PM11 ((12<<8)+11)
#define PM12 ((12<<8)+12)
#define PM13 ((12<<8)+13)
#define PM14 ((12<<8)+14)
#define PM15 ((12<<8)+15)
#define PMX ((12<<8)+255)
#define PN0 ((13<<8)+0)
#define PN1 ((13<<8)+1)
#define PN2 ((13<<8)+2)
#define PN3 ((13<<8)+3)
#define PN4 ((13<<8)+4)
#define PN5 ((13<<8)+5)
#define PN6 ((13<<8)+6)
#define PN7 ((13<<8)+7)
#define PN8 ((13<<8)+8)
#define PN9 ((13<<8)+9)
#define PN10 ((13<<8)+10)
#define PN11 ((13<<8)+11)
#define PN12 ((13<<8)+12)
#define PN13 ((13<<8)+13)
#define PN14 ((13<<8)+14)
#define PN15 ((13<<8)+15)
#define PNX ((13<<8)+255)
#define PO0 ((14<<8)+0)
#define PO1 ((14<<8)+1)
#define PO2 ((14<<8)+2)
#define PO3 ((14<<8)+3)
#define PO4 ((14<<8)+4)
#define PO5 ((14<<8)+5)
#define PO6 ((14<<8)+6)
#define PO7 ((14<<8)+7)
#define PO8 ((14<<8)+8)
#define PO9 ((14<<8)+9)
#define PO10 ((14<<8)+10)
#define PO11 ((14<<8)+11)
#define PO12 ((14<<8)+12)
#define PO13 ((14<<8)+13)
#define PO14 ((14<<8)+14)
#define PO15 ((14<<8)+15)
#define POX ((14<<8)+255)
#define PP0 ((15<<8)+0)
#define PP1 ((15<<8)+1)
#define PP2 ((15<<8)+2)
#define PP3 ((15<<8)+3)
#define PP4 ((15<<8)+4)
#define PP5 ((15<<8)+5)
#define PP6 ((15<<8)+6)
#define PP7 ((15<<8)+7)
#define PP8 ((15<<8)+8)
#define PP9 ((15<<8)+9)
#define PP10 ((15<<8)+10)
#define PP11 ((15<<8)+11)
#define PP12 ((15<<8)+12)
#define PP13 ((15<<8)+13)
#define PP14 ((15<<8)+14)
#define PP15 ((15<<8)+15)
#define PPX ((15<<8)+255)
#define PQ0 ((16<<8)+0)
#define PQ1 ((16<<8)+1)
#define PQ2 ((16<<8)+2)
#define PQ3 ((16<<8)+3)
#define PQ4 ((16<<8)+4)
#define PQ5 ((16<<8)+5)
#define PQ6 ((16<<8)+6)
#define PQ7 ((16<<8)+7)
#define PQ8 ((16<<8)+8)
#define PQ9 ((16<<8)+9)
#define PQ10 ((16<<8)+10)
#define PQ11 ((16<<8)+11)
#define PQ12 ((16<<8)+12)
#define PQ13 ((16<<8)+13)
#define PQ14 ((16<<8)+14)
#define PQ15 ((16<<8)+15)
#define PQX ((16<<8)+255)
#define PR0 ((17<<8)+0)
#define PR1 ((17<<8)+1)
#define PR2 ((17<<8)+2)
#define PR3 ((17<<8)+3)
#define PR4 ((17<<8)+4)
#define PR5 ((17<<8)+5)
#define PR6 ((17<<8)+6)
#define PR7 ((17<<8)+7)
#define PR8 ((17<<8)+8)
#define PR9 ((17<<8)+9)
#define PR10 ((17<<8)+10)
#define PR11 ((17<<8)+11)
#define PR12 ((17<<8)+12)
#define PR13 ((17<<8)+13)
#define PR14 ((17<<8)+14)
#define PR15 ((17<<8)+15)
#define PRX ((17<<8)+255)
#define PS0 ((18<<8)+0)
#define PS1 ((18<<8)+1)
#define PS2 ((18<<8)+2)
#define PS3 ((18<<8)+3)
#define PS4 ((18<<8)+4)
#define PS5 ((18<<8)+5)
#define PS6 ((18<<8)+6)
#define PS7 ((18<<8)+7)
#define PS8 ((18<<8)+8)
#define PS9 ((18<<8)+9)
#define PS10 ((18<<8)+10)
#define PS11 ((18<<8)+11)
#define PS12 ((18<<8)+12)
#define PS13 ((18<<8)+13)
#define PS14 ((18<<8)+14)
#define PS15 ((18<<8)+15)
#define PSX ((18<<8)+255)
#define PT0 ((19<<8)+0)
#define PT1 ((19<<8)+1)
#define PT2 ((19<<8)+2)
#define PT3 ((19<<8)+3)
#define PT4 ((19<<8)+4)
#define PT5 ((19<<8)+5)
#define PT6 ((19<<8)+6)
#define PT7 ((19<<8)+7)
#define PT8 ((19<<8)+8)
#define PT9 ((19<<8)+9)
#define PT10 ((19<<8)+10)
#define PT11 ((19<<8)+11)
#define PT12 ((19<<8)+12)
#define PT13 ((19<<8)+13)
#define PT14 ((19<<8)+14)
#define PT15 ((19<<8)+15)
#define PTX ((19<<8)+255)
#define PU0 ((20<<8)+0)
#define PU1 ((20<<8)+1)
#define PU2 ((20<<8)+2)
#define PU3 ((20<<8)+3)
#define PU4 ((20<<8)+4)
#define PU5 ((20<<8)+5)
#define PU6 ((20<<8)+6)
#define PU7 ((20<<8)+7)
#define PU8 ((20<<8)+8)
#define PU9 ((20<<8)+9)
#define PU10 ((20<<8)+10)
#define PU11 ((20<<8)+11)
#define PU12 ((20<<8)+12)
#define PU13 ((20<<8)+13)
#define PU14 ((20<<8)+14)
#define PU15 ((20<<8)+15)
#define PUX ((20<<8)+255)
#define PV0 ((21<<8)+0)
#define PV1 ((21<<8)+1)
#define PV2 ((21<<8)+2)
#define PV3 ((21<<8)+3)
#define PV4 ((21<<8)+4)
#define PV5 ((21<<8)+5)
#define PV6 ((21<<8)+6)
#define PV7 ((21<<8)+7)
#define PV8 ((21<<8)+8)
#define PV9 ((21<<8)+9)
#define PV10 ((21<<8)+10)
#define PV11 ((21<<8)+11)
#define PV12 ((21<<8)+12)
#define PV13 ((21<<8)+13)
#define PV14 ((21<<8)+14)
#define PV15 ((21<<8)+15)
#define PVX ((21<<8)+255)
#define PW0 ((22<<8)+0)
#define PW1 ((22<<8)+1)
#define PW2 ((22<<8)+2)
#define PW3 ((22<<8)+3)
#define PW4 ((22<<8)+4)
#define PW5 ((22<<8)+5)
#define PW6 ((22<<8)+6)
#define PW7 ((22<<8)+7)
#define PW8 ((22<<8)+8)
#define PW9 ((22<<8)+9)
#define PW10 ((22<<8)+10)
#define PW11 ((22<<8)+11)
#define PW12 ((22<<8)+12)
#define PW13 ((22<<8)+13)
#define PW14 ((22<<8)+14)
#define PW15 ((22<<8)+15)
#define PWX ((22<<8)+255)
#define PX0 ((23<<8)+0)
#define PX1 ((23<<8)+1)
#define PX2 ((23<<8)+2)
#define PX3 ((23<<8)+3)
#define PX4 ((23<<8)+4)
#define PX5 ((23<<8)+5)
#define PX6 ((23<<8)+6)
#define PX7 ((23<<8)+7)
#define PX8 ((23<<8)+8)
#define PX9 ((23<<8)+9)
#define PX10 ((23<<8)+10)
#define PX11 ((23<<8)+11)
#define PX12 ((23<<8)+12)
#define PX13 ((23<<8)+13)
#define PX14 ((23<<8)+14)
#define PX15 ((23<<8)+15)
#define PXX ((23<<8)+255)
#define PY0 ((24<<8)+0)
#define PY1 ((24<<8)+1)
#define PY2 ((24<<8)+2)
#define PY3 ((24<<8)+3)
#define PY4 ((24<<8)+4)
#define PY5 ((24<<8)+5)
#define PY6 ((24<<8)+6)
#define PY7 ((24<<8)+7)
#define PY8 ((24<<8)+8)
#define PY9 ((24<<8)+9)
#define PY10 ((24<<8)+10)
#define PY11 ((24<<8)+11)
#define PY12 ((24<<8)+12)
#define PY13 ((24<<8)+13)
#define PY14 ((24<<8)+14)
#define PY15 ((24<<8)+15)
#define PYX ((24<<8)+255)
#define PZ0 ((25<<8)+0)
#define PZ1 ((25<<8)+1)
#define PZ2 ((25<<8)+2)
#define PZ3 ((25<<8)+3)
#define PZ4 ((25<<8)+4)
#define PZ5 ((25<<8)+5)
#define PZ6 ((25<<8)+6)
#define PZ7 ((25<<8)+7)
#define PZ8 ((25<<8)+8)
#define PZ9 ((25<<8)+9)
#define PZ10 ((25<<8)+10)
#define PZ11 ((25<<8)+11)
#define PZ12 ((25<<8)+12)
#define PZ13 ((25<<8)+13)
#define PZ14 ((25<<8)+14)
#define PZ15 ((25<<8)+15)
#define PZX ((25<<8)+255)
#ifdef __cplusplus
}
#endif
#endif //GPIO_H