libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
4l/gpio.h
Go to the documentation of this file.
1/*
2 * This file is part of the libopencm3 project.
3 *
4 * This library is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this library. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef LIBOPENCM3_GPIO_H
19#define LIBOPENCM3_GPIO_H
20
24
25#define GPIOA (GPIO_BASE)
26#define GPIOB (GPIO_BASE + 0x200)
27#define GPIOC (GPIO_BASE + 0x400)
28
29#define GPIO0 (1 << 0)
30#define GPIO1 (1 << 1)
31#define GPIO2 (1 << 2)
32#define GPIO3 (1 << 3)
33#define GPIO4 (1 << 4)
34#define GPIO5 (1 << 5)
35#define GPIO6 (1 << 6)
36#define GPIO7 (1 << 7)
37#define GPIO8 (1 << 8)
38#define GPIO9 (1 << 9)
39#define GPIO10 (1 << 10)
40#define GPIO11 (1 << 11)
41#define GPIO12 (1 << 12)
42#define GPIO13 (1 << 13)
43#define GPIO14 (1 << 14)
44#define GPIO15 (1 << 15)
45#define GPIO16 (1 << 16)
46#define GPIO17 (1 << 17)
47#define GPIO18 (1 << 18)
48#define GPIO19 (1 << 19)
49#define GPIO20 (1 << 20)
50#define GPIO21 (1 << 21)
51#define GPIO22 (1 << 22)
52#define GPIO23 (1 << 23)
53#define GPIO24 (1 << 24)
54#define GPIO25 (1 << 25)
55#define GPIO26 (1 << 26)
56#define GPIO27 (1 << 27)
57#define GPIO28 (1 << 28)
58#define GPIO29 (1 << 29)
59#define GPIO30 (1 << 30)
60#define GPIO31 (1 << 31)
61
62
63#define GPIO_GPER(X) MMIO32(X)
64#define GPIO_GPERS(X) MMIO32((X) + 0x004)
65#define GPIO_GPERC(X) MMIO32((X) + 0x008)
66#define GPIO_GPERT(X) MMIO32((X) + 0x00C)
67
68#define GPIO_PMR(P, I) MMIO32((P) + (0x10*(1 + (I))))
69#define GPIO_PMR_SETVAL(P, I, S) MMIO32((P) + (0x10*(1 + (I)) + ((S) ? 0x04 : 0x08)))
70
71#define GPIO_PMR0(X) MMIO32((X) + 0x010)
72#define GPIO_PMR0S(X) MMIO32((X) + 0x014)
73#define GPIO_PMR0C(X) MMIO32((X) + 0x018)
74#define GPIO_PMR0T(X) MMIO32((X) + 0x01C)
75
76#define GPIO_PMR1(X) MMIO32((X) + 0x020)
77#define GPIO_PMR1S(X) MMIO32((X) + 0x024)
78#define GPIO_PMR1C(X) MMIO32((X) + 0x028)
79#define GPIO_PMR1T(X) MMIO32((X) + 0x02C)
80
81#define GPIO_PMR2(X) MMIO32((X) + 0x030)
82#define GPIO_PMR2S(X) MMIO32((X) + 0x034)
83#define GPIO_PMR2C(X) MMIO32((X) + 0x038)
84#define GPIO_PMR2T(X) MMIO32((X) + 0x03C)
85
86#define GPIO_ODER(X) MMIO32((X) + 0x040)
87#define GPIO_ODERS(X) MMIO32((X) + 0x044)
88#define GPIO_ODERC(X) MMIO32((X) + 0x048)
89#define GPIO_ODERT(X) MMIO32((X) + 0x04C)
90
91#define GPIO_OVR(X) MMIO32((X) + 0x050)
92#define GPIO_OVRS(X) MMIO32((X) + 0x054)
93#define GPIO_OVRC(X) MMIO32((X) + 0x058)
94#define GPIO_OVRT(X) MMIO32((X) + 0x05C)
95
96#define GPIO_PVR(X) MMIO32((X) + 0x060)
97
98#define GPIO_PUER(X) MMIO32((X) + 0x070)
99#define GPIO_PUERS(X) MMIO32((X) + 0x074)
100#define GPIO_PUERC(X) MMIO32((X) + 0x078)
101#define GPIO_PUERT(X) MMIO32((X) + 0x07C)
102
103#define GPIO_PDER(X) MMIO32((X) + 0x080)
104#define GPIO_PDERS(X) MMIO32((X) + 0x084)
105#define GPIO_PDERC(X) MMIO32((X) + 0x088)
106#define GPIO_PDERT(X) MMIO32((X) + 0x08C)
107
108#define GPIO_IER(X) MMIO32((X) + 0x090)
109#define GPIO_IERS(X) MMIO32((X) + 0x094)
110#define GPIO_IERC(X) MMIO32((X) + 0x098)
111#define GPIO_IERT(X) MMIO32((X) + 0x09C)
112
113#define GPIO_IMR0(X) MMIO32((X) + 0x0A0)
114#define GPIO_IMR0S(X) MMIO32((X) + 0x0A4)
115#define GPIO_IMR0C(X) MMIO32((X) + 0x0A8)
116#define GPIO_IMR0T(X) MMIO32((X) + 0x0AC)
117
118#define GPIO_IMR1(X) MMIO32((X) + 0x0B0)
119#define GPIO_IMR1S(X) MMIO32((X) + 0x0B4)
120#define GPIO_IMR1C(X) MMIO32((X) + 0x0B8)
121#define GPIO_IMR1T(X) MMIO32((X) + 0x0BC)
122
123#define GPIO_GFER(X) MMIO32((X) + 0x0C0)
124#define GPIO_GFERS(X) MMIO32((X) + 0x0C4)
125#define GPIO_GFERC(X) MMIO32((X) + 0x0C8)
126#define GPIO_GFERT(X) MMIO32((X) + 0x0CC)
127
128#define GPIO_IFR(X) MMIO32((X) + 0x0D0)
129#define GPIO_IFRC(X) MMIO32((X) + 0x0D8)
130
131#define GPIO_ODCR0(X) MMIO32((X) + 0x100)
132#define GPIO_ODCR0S(X) MMIO32((X) + 0x104)
133#define GPIO_ODCR0C(X) MMIO32((X) + 0x108)
134#define GPIO_ODCR0T(X) MMIO32((X) + 0x10C)
135
136#define GPIO_ODCR1(X) MMIO32((X) + 0x110)
137#define GPIO_ODCR1S(X) MMIO32((X) + 0x114)
138#define GPIO_ODCR1C(X) MMIO32((X) + 0x118)
139#define GPIO_ODCR1T(X) MMIO32((X) + 0x11C)
140
141#define GPIO_OSRR0(X) MMIO32((X) + 0x130)
142#define GPIO_OSRR0S(X) MMIO32((X) + 0x134)
143#define GPIO_OSRR0C(X) MMIO32((X) + 0x138)
144#define GPIO_OSRR0T(X) MMIO32((X) + 0x13C)
145
146#define GPIO_STER(X) MMIO32((X) + 0x160)
147#define GPIO_STERS(X) MMIO32((X) + 0x164)
148#define GPIO_STERC(X) MMIO32((X) + 0x168)
149#define GPIO_STERT(X) MMIO32((X) + 0x16C)
150
151#define GPIO_EVER(X) MMIO32((X) + 0x180)
152#define GPIO_EVERS(X) MMIO32((X) + 0x184)
153#define GPIO_EVERC(X) MMIO32((X) + 0x188)
154#define GPIO_EVERT(X) MMIO32((X) + 0x18C)
155
156#define GPIO_PARAMETER(X) MMIO32((X) + 0x1f8)
157#define GPIO_VERSION(X) MMIO32((X) + 0x1fc)
158
160 // Peripherals
171};
172
174
175void gpio_enable(uint32_t gpioport, uint32_t gpios, enum gpio_mode mode);
176void gpio_disable(uint32_t gpioport, uint32_t gpios);
177
179
180#endif
gpio_mode
Definition: 4l/gpio.h:159
@ GPIO_MODE_H
Definition: 4l/gpio.h:168
@ GPIO_MODE_C
Definition: 4l/gpio.h:163
@ GPIO_MODE_OUT
Definition: 4l/gpio.h:170
@ GPIO_MODE_B
Definition: 4l/gpio.h:162
@ GPIO_MODE_A
Definition: 4l/gpio.h:161
@ GPIO_MODE_E
Definition: 4l/gpio.h:165
@ GPIO_MODE_D
Definition: 4l/gpio.h:164
@ GPIO_MODE_IN
Definition: 4l/gpio.h:169
@ GPIO_MODE_F
Definition: 4l/gpio.h:166
@ GPIO_MODE_G
Definition: 4l/gpio.h:167
void gpio_enable(uint32_t gpioport, uint32_t gpios, enum gpio_mode mode)
Enable output pins.
Definition: gpio.c:72
void gpio_disable(uint32_t gpioport, uint32_t gpios)
Disable output pins.
Definition: gpio.c:97
#define END_DECLS
Definition: common.h:34
#define BEGIN_DECLS
Definition: common.h:33