Crate ruspiro_gpio[][src]

Expand description

Raspberry Pi GPIO access abstraction

This crate provide as simple to use and safe abstraction of the GPIO’s available on the Raspberry Pi 3. The GPIO configuration requires access to MMIO registers with a specific memory base address. As this might differ between different models the right address is choosen based on the given ruspiro_pi3 feature while compiling.


The crate provides a singleton accessor to the GPIO peripheral and it’s pin to be used in a safe manner like this:

use ruspiro_gpio::GPIO;

fn doc() {
    GPIO.with_mut(|gpio| {
        let pin = gpio.get_pin(17).unwrap(); // assuming we can always get this pin as it is not in use already
        pin.into_output().high(); // set this pin to high - this may lit a connected LED :)


  • ruspiro_pi3 Ensures the proper MMIO base memory address is used for Raspberry Pi 3


Unsafe GPIO access


GPIO peripheral representation

The error type that will be returned on issues with accessing the GPIO peripheral

Representation of a GPIO pin that can have specific features. Those features are described with generic arguments to define the pin e.g. as an output pin with disabled PullUp/Down.


The different GPIO detect events, an event handler can be registered for


Static Singleton accessor to the GPIO peripheral. The Singleton ensures cross core mutual exclusive access.


Implement interrupt handler for GPIO driven interrupts from bank 0 (GPIO 0..31)

Implement interrupt handler for GPIO driven interrupts from bank 1 (GPIO 32..53)