NEORV32 Software Framework Documentation
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 - 2024 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
13
14#ifndef neorv32_gpio_h
15#define neorv32_gpio_h
16
17#include <stdint.h>
18
19
20/**********************************************************************/
25typedef volatile struct __attribute__((packed,aligned(4))) {
26 const uint32_t PORT_IN;
27 uint32_t PORT_OUT;
28 const uint32_t reserved[2];
29 uint32_t IRQ_TYPE;
30 uint32_t IRQ_POLARITY;
31 uint32_t IRQ_ENABLE;
32 uint32_t IRQ_PENDING;
34
36#define NEORV32_GPIO ((neorv32_gpio_t*) (NEORV32_GPIO_BASE))
38
39
40/**********************************************************************/
43enum GPIO_TRIGGER_enum {
44 GPIO_TRIG_LEVEL_LOW = 0b00, // low-level
45 GPIO_TRIG_LEVEL_HIGH = 0b01, // high-level
46 GPIO_TRIG_EDGE_FALLING = 0b10, // falling-edge
47 GPIO_TRIG_EDGE_RISING = 0b11 // rising-edge
48};
49
50
51/**********************************************************************/
56void neorv32_gpio_pin_set(int pin, int value);
57void neorv32_gpio_pin_toggle(int pin);
58uint32_t neorv32_gpio_pin_get(int pin);
59void neorv32_gpio_port_set(uint32_t pin_mask);
60void neorv32_gpio_port_toggle(uint32_t pin_mask);
61uint32_t neorv32_gpio_port_get(void);
62void neorv32_gpio_irq_setup(int pin, int trigger);
63void neorv32_gpio_irq_enable(uint32_t pin_mask);
64void neorv32_gpio_irq_disable(uint32_t pin_mask);
65uint32_t neorv32_gpio_irq_get(void);
66void neorv32_gpio_irq_clr(uint32_t pin_mask);
68
69
70#endif // neorv32_gpio_h
uint32_t neorv32_gpio_irq_get(void)
Definition neorv32_gpio.c:164
void neorv32_gpio_irq_disable(uint32_t pin_mask)
Definition neorv32_gpio.c:153
void neorv32_gpio_pin_toggle(int pin)
Definition neorv32_gpio.c:58
int neorv32_gpio_available(void)
Definition neorv32_gpio.c:23
void neorv32_gpio_port_toggle(uint32_t pin_mask)
Definition neorv32_gpio.c:92
void neorv32_gpio_pin_set(int pin, int value)
Definition neorv32_gpio.c:40
void neorv32_gpio_irq_enable(uint32_t pin_mask)
Definition neorv32_gpio.c:142
void neorv32_gpio_irq_clr(uint32_t pin_mask)
Definition neorv32_gpio.c:175
uint32_t neorv32_gpio_port_get(void)
Definition neorv32_gpio.c:103
void neorv32_gpio_port_set(uint32_t pin_mask)
Definition neorv32_gpio.c:81
void neorv32_gpio_irq_setup(int pin, int trigger)
Definition neorv32_gpio.c:115
uint32_t neorv32_gpio_pin_get(int pin)
Definition neorv32_gpio.c:70
Definition neorv32_gpio.h:25
uint32_t PORT_OUT
Definition neorv32_gpio.h:27
const uint32_t reserved[2]
Definition neorv32_gpio.h:28
uint32_t IRQ_PENDING
Definition neorv32_gpio.h:32
uint32_t IRQ_ENABLE
Definition neorv32_gpio.h:31
uint32_t IRQ_TYPE
Definition neorv32_gpio.h:29
uint32_t IRQ_POLARITY
Definition neorv32_gpio.h:30
const uint32_t PORT_IN
Definition neorv32_gpio.h:26