52#define GPIOA GPIOA_BASE
53#define GPIOB GPIOB_BASE
54#define GPIOC GPIOC_BASE
55#define GPIOD GPIOD_BASE
56#define GPIOE GPIOE_BASE
57#define GPIOF GPIOF_BASE
58#define GPIOG GPIOG_BASE
59#define GPIOH GPIOH_BASE
60#define GPIOJ GPIOJ_BASE
61#define GPIOK GPIOK_BASE
62#define GPIOL GPIOL_BASE
63#define GPIOM GPIOM_BASE
64#define GPION GPION_BASE
65#define GPIOP GPIOP_BASE
66#define GPIOQ GPIOQ_BASE
93#define GPIO_DATA(port) (&MMIO32((port) + 0x000))
96#define GPIO_DIR(port) MMIO32((port) + 0x400)
99#define GPIO_IS(port) MMIO32((port) + 0x404)
102#define GPIO_IBE(port) MMIO32((port) + 0x408)
105#define GPIO_IEV(port) MMIO32((port) + 0x40c)
108#define GPIO_IM(port) MMIO32((port) + 0x410)
111#define GPIO_RIS(port) MMIO32((port) + 0x414)
114#define GPIO_MIS(port) MMIO32((port) + 0x418)
117#define GPIO_ICR(port) MMIO32((port) + 0x41c)
120#define GPIO_AFSEL(port) MMIO32((port) + 0x420)
123#define GPIO_DR2R(port) MMIO32((port) + 0x500)
126#define GPIO_DR4R(port) MMIO32((port) + 0x504)
129#define GPIO_DR8R(port) MMIO32((port) + 0x508)
132#define GPIO_ODR(port) MMIO32((port) + 0x50c)
135#define GPIO_PUR(port) MMIO32((port) + 0x510)
138#define GPIO_PDR(port) MMIO32((port) + 0x514)
141#define GPIO_SLR(port) MMIO32((port) + 0x518)
144#define GPIO_DEN(port) MMIO32((port) + 0x51c)
147#define GPIO_LOCK(port) MMIO32((port) + 0x520)
150#define GPIO_CR(port) MMIO32((port) + 0x524)
153#define GPIO_AMSEL(port) MMIO32((port) + 0x528)
156#define GPIO_PCTL(port) MMIO32((port) + 0x52C)
159#define GPIO_ADCCTL(port) MMIO32((port) + 0x530)
162#define GPIO_DMACTL(port) MMIO32((port) + 0x534)
165#define GPIO_PERIPH_ID4(port) MMIO32((port) + 0xFD0)
166#define GPIO_PERIPH_ID5(port) MMIO32((port) + 0xFD4)
167#define GPIO_PERIPH_ID6(port) MMIO32((port) + 0xFD8)
168#define GPIO_PERIPH_ID7(port) MMIO32((port) + 0xFDC)
169#define GPIO_PERIPH_ID0(port) MMIO32((port) + 0xFE0)
170#define GPIO_PERIPH_ID1(port) MMIO32((port) + 0xFE4)
171#define GPIO_PERIPH_ID2(port) MMIO32((port) + 0xFE8)
172#define GPIO_PERIPH_ID3(port) MMIO32((port) + 0xFEC)
175#define GPIO_PCELL_ID0(port) MMIO32((port) + 0xFF0)
176#define GPIO_PCELL_ID1(port) MMIO32((port) + 0xFF4)
177#define GPIO_PCELL_ID2(port) MMIO32((port) + 0xFF8)
178#define GPIO_PCELL_ID3(port) MMIO32((port) + 0xFFC)
224void gpio_set_af(uint32_t gpioport, uint8_t alt_func_num, uint8_t gpios);
249static inline uint8_t
gpio_read(uint32_t gpioport, uint8_t gpios)
269static inline void gpio_write(uint32_t gpioport, uint8_t gpios, uint8_t data)
284static inline void gpio_set(uint32_t gpioport, uint8_t gpios)
298static inline void gpio_clear(uint32_t gpioport, uint8_t gpios)
355 return GPIO_MIS(gpioport) & srcpins;
static void gpio_port_write(uint32_t gpioport, uint8_t data)
Set level of of all pins from a port (atomic)
static uint8_t gpio_read(uint32_t gpioport, uint8_t gpios)
Get status of a Group of Pins (atomic)
static void gpio_write(uint32_t gpioport, uint8_t gpios, uint8_t data)
Set level of a Group of Pins (atomic)
static void gpio_set(uint32_t gpioport, uint8_t gpios)
Set a Group of Pins (atomic)
static uint8_t gpio_port_read(uint32_t gpioport)
Read level of all pins from a port (atomic)
static void gpio_clear(uint32_t gpioport, uint8_t gpios)
Clear a Group of Pins (atomic)
void gpio_mode_setup(uint32_t gpioport, enum gpio_mode mode, enum gpio_pullup pullup, uint8_t gpios)
Configure a group of pins.
void gpio_unlock_commit(uint32_t gpioport, uint8_t gpios)
Unlock the commit control of a special function pin.
void gpio_set_af(uint32_t gpioport, uint8_t alt_func_num, uint8_t gpios)
Multiplex group of pins to the given alternate function.
void gpio_enable_interrupts(uint32_t gpioport, uint8_t gpios)
Enable interrupts on specified GPIO pins.
void gpio_configure_trigger(uint32_t gpioport, enum gpio_trigger trigger, uint8_t gpios)
Configure the interrupt trigger on the given GPIO pins.
void gpio_set_output_config(uint32_t gpioport, enum gpio_output_type otype, enum gpio_drive_strength drive, uint8_t gpios)
Configure output parameters of a group of pins.
void gpio_enable_ahb_aperture(void)
Enable access to GPIO registers via the AHB aperture.
void gpio_disable_interrupts(uint32_t gpioport, uint8_t gpios)
Disable interrupts on specified GPIO pins.
void gpio_toggle(uint32_t gpioport, uint8_t gpios)
Toggle a Group of Pins.
@ GPIO_DRIVE_8MA_SLEW_CTL
8mA drive with slew rate control
@ GPIO_DRIVE_8MA
8mA drive
@ GPIO_DRIVE_2MA
2mA drive
@ GPIO_DRIVE_4MA
4mA drive
@ GPIO_PUPD_PULLUP
Pull the pin high.
@ GPIO_PUPD_PULLDOWN
Pull the pin low.
@ GPIO_PUPD_NONE
Do not pull the pin high or low.
@ GPIO_MODE_ANALOG
Configure pin as analog function.
@ GPIO_MODE_INPUT
Configure pin as input.
@ GPIO_MODE_OUTPUT
Configure pin as output.
@ GPIO_OTYPE_OD
Open drain configuration.
@ GPIO_OTYPE_PP
Push-pull configuration.
@ GPIO_TRIG_EDGE_BOTH
Falling and Rising edges trigger.
@ GPIO_TRIG_EDGE_FALL
Falling edge trigger.
@ GPIO_TRIG_LVL_LOW
Level trigger, signal low.
@ GPIO_TRIG_LVL_HIGH
Level trigger, signal high.
@ GPIO_TRIG_EDGE_RISE
Rising edge trigger.
static void gpio_clear_interrupt_flag(uint32_t gpioport, uint8_t gpios)
Mark interrupt as serviced.
static bool gpio_is_interrupt_source(uint32_t gpioport, uint8_t srcpins)
Determine if interrupt is generated by the given pin.