Module gpio

Source
Expand description

§API for the GPIO peripheral

The implementation of this GPIO module is heavily based on the ATSAMD HAL implementation.

This API provides two different submodules, pin and dynpin, representing two different ways to handle GPIO pins. The default, pin, is a type-level API that tracks the state of each pin at compile-time. The alternative, dynpin is a type-erased, value-level API that tracks the state of each pin at run-time.

The type-level API is strongly preferred. By representing the state of each pin within the type system, the compiler can detect logic errors at compile-time. Furthermore, the type-level API has absolutely zero run-time cost.

If needed, dynpin can be used to erase the type-level differences between pins. However, by doing so, pins must now be tracked at run-time, and each pin has a non-zero memory footprint.

§Examples

Re-exports§

pub use dynpin::*;
pub use pin::*;
pub use asynch::*;

Modules§

asynch
Async GPIO functionality for the VA108xx family.
dynpin
Type-erased, value-level module for GPIO pins
pin
Type-level module for GPIO pins

Structs§

IsMaskedError

Enums§

InterruptEdge
InterruptLevel
PinState
Port

Constants§

NUM_GPIO_PINS
NUM_PINS_PORT_A
NUM_PINS_PORT_B