Module gpio

Module gpio 

Source
Expand description

General Purpose Input and Output (GPIO)

§Basic usage

use embedded_hal::digital::{InputPin, OutputPin};
use rp235x_hal::{
    self as hal, clocks::init_clocks_and_plls, gpio::Pins, watchdog::Watchdog, Sio,
};
let mut peripherals = hal::pac::Peripherals::take().unwrap();
let mut watchdog = Watchdog::new(peripherals.WATCHDOG);
const XOSC_CRYSTAL_FREQ: u32 = 12_000_000; // Typically found in BSP crates
let mut clocks = init_clocks_and_plls(
    XOSC_CRYSTAL_FREQ,
    peripherals.XOSC,
    peripherals.CLOCKS,
    peripherals.PLL_SYS,
    peripherals.PLL_USB,
    &mut peripherals.RESETS,
    &mut watchdog,
)
.ok()
.unwrap();

let mut pac = hal::pac::Peripherals::take().unwrap();
let sio = Sio::new(pac.SIO);
let pins = rp235x_hal::gpio::Pins::new(
    pac.IO_BANK0,
    pac.PADS_BANK0,
    sio.gpio_bank0,
    &mut pac.RESETS,
);
// Set a pin to drive output
let mut output_pin = pins.gpio25.into_push_pull_output();
// Drive output to 3.3V
output_pin.set_high().unwrap();
// Drive output to 0V
output_pin.set_low().unwrap();
// Set a pin to input
let mut input_pin = pins.gpio24.into_floating_input();
// pinstate will be true if the pin is above 2V
let pinstate = input_pin.is_high().unwrap();
// pinstate_low will be true if the pin is below 1.15V
let pinstate_low = input_pin.is_low().unwrap();
// you'll want to pull-up or pull-down a switch if it's not done externally
let button_pin = pins.gpio23.into_pull_down_input();
let button2_pin = pins.gpio22.into_pull_up_input();

See examples/gpio_in_out.rs for a more practical example

Modules§

bank0
Pin bank Bank0
qspi
Pin bank Qspi

Structs§

AsInputPin
Wrapper providing input pin functions for GPIO pins independent of the configured mode.
DynPinId
Value-level representation for the pin (bank + id).
FunctionClock
Type-level variant for pin Function.
FunctionI2c
Type-level variant for pin Function.
FunctionNull
Type-level variant for pin Function.
FunctionPio0
Type-level variant for pin Function.
FunctionPio1
Type-level variant for pin Function.
FunctionPio2
Type-level variant for pin Function.
FunctionPwm
Type-level variant for pin Function.
FunctionSio
Type-level variant for pin Function.
FunctionSpi
Type-level variant for pin Function.
FunctionUart
Type-level variant for pin Function.
FunctionUartAux
Type-level variant for pin Function.
FunctionUsb
Type-level variant for pin Function.
FunctionXip
Type-level variant for pin Function.
FunctionXipCs1
Type-level variant for pin Function.
InOutPin
A wrapper AnyPin<Function = FunctionSioOutput> emulating open-drain function.
InvalidFunction
Error type for invalid function conversion.
Pin
Represents a pin, with a given ID (e.g. Gpio3), a given function (e.g. FunctionUart) and a given pull type (e.g. pull-down).
PinGroup
A group of pins to be controlled together and guaranty single cycle control of several pins.
Pins
Collection of all the individual Pins
PullBusKeep
Type-level variant of PullType.
PullDown
Type-level variant of PullType.
PullNone
Type-level variant of PullType.
PullUp
Type-level variant of PullType.

Enums§

DynBankId
Value-level enum for the pin’s bank.
DynFunction
Describes the function currently assigned to a pin with a dynamic type.
DynPullType
Value-level enum for pull resistor types.
DynSioConfig
Value-level enum for SIO configuration.
InputOverride
Input override state.
Interrupt
Interrupt kind.
InterruptOverride
Interrupt override state.
OutputDriveStrength
The amount of current that a pin can drive when used as an output.
OutputEnableOverride
Output enable override state.
OutputOverride
Output override state.
OutputSlewRate
The slew rate of a pin when used as an output.
PinState
Digital output pin state.
SioInput
Type-level variant for SIO configuration.
SioOutput
Type-level variant for SIO configuration.

Traits§

AnyPin
Type class for Pin types.
DefaultTypeState
Default type state of a pin after reset of the pads, io and sio.
Function
Type-level enum for pin function.
PinId
Type-level enum for the pin Id (pin number + bank).
PullType
Type-level enum for pull resistor types.
SioConfig
Type-level enum for SIO configuration.
ValidFunction
Marker of valid pin -> function combination.

Functions§

new_pin
Create a new pin instance.

Type Aliases§

Error
GPIO error type.
FunctionI2C
Alias to FunctionI2c.
FunctionSioInput
Alias to FunctionSio<Input>.
FunctionSioOutput
Alias to FunctionSio<Output>.
SpecificPin
Type alias to recover the specific Pin type from an implementation of AnyPin.