API Reference
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_gpio.h
Go to the documentation of this file.
1// ================================================================================ //
2// The NEORV32 RISC-V Processor - https://github.com/stnolting/neorv32 //
3// Copyright (c) NEORV32 contributors. //
4// Copyright (c) 2020 - 2026 Stephan Nolting. All rights reserved. //
5// Licensed under the BSD-3-Clause license, see LICENSE for details. //
6// SPDX-License-Identifier: BSD-3-Clause //
7// ================================================================================ //
8
14#ifndef NEORV32_GPIO_H
15#define NEORV32_GPIO_H
16
17#include <neorv32.h>
18#include <stdint.h>
19
20/**********************************************************************/
25typedef volatile struct __attribute__((packed,aligned(4))) {
26 const uint32_t PORT_IN;
27 uint32_t PORT_OUT;
28 uint32_t PORT_DIR;
29 const uint32_t reserved;
30 uint32_t IRQ_TYPE;
31 uint32_t IRQ_POLARITY;
32 uint32_t IRQ_ENABLE;
33 uint32_t IRQ_PENDING;
35
37#define NEORV32_GPIO ((neorv32_gpio_t*) (NEORV32_GPIO_BASE))
41/**********************************************************************/
44enum GPIO_TRIGGER_enum {
45 GPIO_TRIG_LEVEL_LOW = 0b00, // low-level
46 GPIO_TRIG_LEVEL_HIGH = 0b01, // high-level
47 GPIO_TRIG_EDGE_FALLING = 0b10, // falling-edge
48 GPIO_TRIG_EDGE_RISING = 0b11 // rising-edge
49};
50
51
52/**********************************************************************/
57void neorv32_gpio_pin_set(int pin, int value);
58void neorv32_gpio_pin_toggle(int pin);
59uint32_t neorv32_gpio_pin_get(int pin);
60void neorv32_gpio_port_set(uint32_t pin_mask);
61void neorv32_gpio_port_toggle(uint32_t pin_mask);
62uint32_t neorv32_gpio_port_get(void);
63void neorv32_gpio_dir_set(uint32_t pin_mask);
64uint32_t neorv32_gpio_dir_get(void);
65void neorv32_gpio_irq_setup(int pin, int trigger);
66void neorv32_gpio_irq_enable(uint32_t pin_mask);
67void neorv32_gpio_irq_disable(uint32_t pin_mask);
68uint32_t neorv32_gpio_irq_get(void);
69void neorv32_gpio_irq_clr(uint32_t pin_mask);
73#endif // NEORV32_GPIO_H
Main NEORV32 core library / driver / HAL include file.
uint32_t neorv32_gpio_irq_get(void)
Definition neorv32_gpio.c:182
void neorv32_gpio_irq_disable(uint32_t pin_mask)
Definition neorv32_gpio.c:171
void neorv32_gpio_pin_toggle(int pin)
Definition neorv32_gpio.c:52
int neorv32_gpio_available(void)
Definition neorv32_gpio.c:22
void neorv32_gpio_port_toggle(uint32_t pin_mask)
Definition neorv32_gpio.c:86
void neorv32_gpio_pin_set(int pin, int value)
Definition neorv32_gpio.c:34
void neorv32_gpio_irq_enable(uint32_t pin_mask)
Definition neorv32_gpio.c:160
void neorv32_gpio_irq_clr(uint32_t pin_mask)
Definition neorv32_gpio.c:193
uint32_t neorv32_gpio_dir_get(void)
Definition neorv32_gpio.c:121
uint32_t neorv32_gpio_port_get(void)
Definition neorv32_gpio.c:97
void neorv32_gpio_dir_set(uint32_t pin_mask)
Definition neorv32_gpio.c:109
void neorv32_gpio_port_set(uint32_t pin_mask)
Definition neorv32_gpio.c:75
void neorv32_gpio_irq_setup(int pin, int trigger)
Definition neorv32_gpio.c:133
uint32_t neorv32_gpio_pin_get(int pin)
Definition neorv32_gpio.c:64
Definition neorv32_gpio.h:25
uint32_t PORT_OUT
Definition neorv32_gpio.h:27
uint32_t IRQ_PENDING
Definition neorv32_gpio.h:33
uint32_t PORT_DIR
Definition neorv32_gpio.h:28
uint32_t IRQ_ENABLE
Definition neorv32_gpio.h:32
uint32_t IRQ_TYPE
Definition neorv32_gpio.h:30
const uint32_t reserved
Definition neorv32_gpio.h:29
uint32_t IRQ_POLARITY
Definition neorv32_gpio.h:31
const uint32_t PORT_IN
Definition neorv32_gpio.h:26