Struct Flex

Source
pub struct Flex<'d> { /* private fields */ }
Expand description

Flexible pin driver.

This driver allows changing the pin mode between input and output.

Implementations§

Source§

impl Flex<'_>

Source

pub async fn wait_for(&mut self, event: Event)

Available on crate feature unstable only.

Wait until the pin experiences a particular Event.

The GPIO driver will disable listening for the event once it occurs, or if the Future is dropped.

Note that calling this function will overwrite previous listen operations for this pin.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub async fn wait_for_high(&mut self)

Available on crate feature unstable only.

Wait until the pin is high.

See Self::wait_for for more information.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub async fn wait_for_low(&mut self)

Available on crate feature unstable only.

Wait until the pin is low.

See Self::wait_for for more information.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub async fn wait_for_rising_edge(&mut self)

Available on crate feature unstable only.

Wait for the pin to undergo a transition from low to high.

See Self::wait_for for more information.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub async fn wait_for_falling_edge(&mut self)

Available on crate feature unstable only.

Wait for the pin to undergo a transition from high to low.

See Self::wait_for for more information.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub async fn wait_for_any_edge(&mut self)

Available on crate feature unstable only.

Wait for the pin to undergo any transition, i.e low to high OR high to low.

See Self::wait_for for more information.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source§

impl<'d> Flex<'d>

Source

pub fn new(pin: impl Peripheral<P = impl Into<AnyPin>> + 'd) -> Self

Available on crate feature unstable only.

Create flexible pin driver for a Pin. No mode change happens.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn peripheral_input(&self) -> InputSignal

Available on crate feature unstable only.

Returns a peripheral input connected to this pin.

The input signal can be passed to peripherals in place of an input pin.

let pin1_gpio = Flex::new(peripherals.GPIO1);
// Can be passed as an input.
let pin1 = pin1_gpio.peripheral_input();
§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn is_high(&self) -> bool

Available on crate feature unstable only.

Get whether the pin input level is high.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn is_low(&self) -> bool

Available on crate feature unstable only.

Get whether the pin input level is low.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn level(&self) -> Level

Available on crate feature unstable only.

Get the current pin input level.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn listen(&mut self, event: Event)

Available on crate feature unstable only.

Listen for interrupts.

See Input::listen for more information and an example.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn unlisten(&mut self)

Available on crate feature unstable only.

Stop listening for interrupts.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn is_listening(&self) -> bool

Available on crate feature unstable only.

Check if the pin is listening for interrupts.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn clear_interrupt(&mut self)

Available on crate feature unstable only.

Clear the interrupt status bit for this Pin

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn is_interrupt_set(&self) -> bool

Available on crate feature unstable only.

Checks if the interrupt status bit for this Pin is set

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn wakeup_enable( &mut self, enable: bool, event: WakeEvent, ) -> Result<(), WakeConfigError>

Available on crate feature unstable only.

Enable as a wake-up source.

This will unlisten for interrupts

§Error

Configuring pin to wake up from light sleep on an edge trigger is currently not supported, corresponding variant of WakeConfigError will be returned.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn set_as_output(&mut self)

Available on crate feature unstable only.

Set the GPIO to output mode.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn set_high(&mut self)

Available on crate feature unstable only.

Set the output as high.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn set_low(&mut self)

Available on crate feature unstable only.

Set the output as low.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn set_level(&mut self, level: Level)

Available on crate feature unstable only.

Set the output level.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn is_set_high(&self) -> bool

Available on crate feature unstable only.

Is the output pin set as high?

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn is_set_low(&self) -> bool

Available on crate feature unstable only.

Is the output pin set as low?

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn output_level(&self) -> Level

Available on crate feature unstable only.

What level output is set to

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn toggle(&mut self)

Available on crate feature unstable only.

Toggle pin output

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn set_drive_strength(&mut self, strength: DriveStrength)

Available on crate feature unstable only.

Configure the DriveStrength of the pin

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn set_as_open_drain(&mut self, pull: Pull)

Available on crate feature unstable only.

Set the GPIO to open-drain mode.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn pull_direction(&mut self, pull: Pull)

Available on crate feature unstable only.

Configure pullup/pulldown resistors.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn enable_input(&mut self, enable_input: bool)

Available on crate feature unstable only.

Enable or disable the GPIO pin input buffer.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn apply_output_config(&mut self, config: &OutputConfig)

Available on crate feature unstable only.

Applies the given output configuration to the pin.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn apply_input_config(&mut self, config: &InputConfig)

Available on crate feature unstable only.

Applies the given input configuration to the pin.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn split(self) -> (InputSignal, OutputSignal)

Available on crate feature unstable only.

Split the pin into an input and output signal.

Peripheral signals allow connecting peripherals together without using external hardware.

let pin1 = Flex::new(peripherals.GPIO1);
let (input, output) = pin1.split();
§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source

pub fn into_peripheral_output(self) -> OutputSignal

Available on crate feature unstable only.

Turns the pin object into a peripheral output.

The output signal can be passed to peripherals in place of an output pin.

let pin1_gpio = Flex::new(peripherals.GPIO1);
// Can be passed as an output.
let pin1 = pin1_gpio.into_peripheral_output();
§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Trait Implementations§

Source§

impl<'d> Debug for Flex<'d>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ErrorType for Flex<'_>

Available on crate feature unstable only.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source§

type Error = Infallible

Error type
Source§

impl<'d> Format for Flex<'d>

Source§

fn format(&self, f: Formatter<'_>)

Writes the defmt representation of self to fmt.
Source§

impl From<Flex<'static>> for InputConnection

Available on crate feature unstable only.
Source§

fn from(pin: Flex<'static>) -> Self

Converts to this type from the input type.
Source§

impl From<Flex<'static>> for InputSignal

Available on crate feature unstable only.
Source§

fn from(input: Flex<'static>) -> Self

Converts to this type from the input type.
Source§

impl From<Flex<'static>> for OutputConnection

Available on crate feature unstable only.
Source§

fn from(pin: Flex<'static>) -> Self

Converts to this type from the input type.
Source§

impl From<Flex<'static>> for OutputSignal

Available on crate feature unstable only.
Source§

fn from(output: Flex<'static>) -> Self

Converts to this type from the input type.
Source§

impl InputPin for Flex<'_>

Available on crate feature unstable only.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source§

fn is_high(&mut self) -> Result<bool, Self::Error>

Is the input pin high?
Source§

fn is_low(&mut self) -> Result<bool, Self::Error>

Is the input pin low?
Source§

impl OutputPin for Flex<'_>

Available on crate feature unstable only.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source§

fn set_low(&mut self) -> Result<(), Self::Error>

Drives the pin low. Read more
Source§

fn set_high(&mut self) -> Result<(), Self::Error>

Drives the pin high. Read more
Source§

fn set_state(&mut self, state: PinState) -> Result<(), Self::Error>

Drives the pin high or low depending on the provided value. Read more
Source§

impl Peripheral for Flex<'_>

Source§

type P = Flex<'_>

Peripheral singleton type
Source§

unsafe fn clone_unchecked(&self) -> Self::P

Unsafely clone (duplicate) a peripheral singleton. Read more
Source§

fn into_ref<'a>(self) -> PeripheralRef<'a, Self::P>
where Self: 'a,

Convert a value into a PeripheralRef. Read more
Source§

fn map_into<U>(self) -> U
where Self::P: Into<U>, U: Peripheral<P = U>,

Map the peripheral using Into. Read more
Source§

fn map<U>(self, transform: impl FnOnce(Self::P) -> U) -> U
where U: Peripheral<P = U>,

Map the peripheral using Into. Read more
Source§

impl StatefulOutputPin for Flex<'_>

Available on crate feature unstable only.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source§

fn is_set_high(&mut self) -> Result<bool, Self::Error>

Is the pin in drive high mode? Read more
Source§

fn is_set_low(&mut self) -> Result<bool, Self::Error>

Is the pin in drive low mode? Read more
Source§

fn toggle(&mut self) -> Result<(), Self::Error>

Toggle pin output.
Source§

impl Wait for Flex<'_>

Available on crate feature unstable only.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source§

async fn wait_for_high(&mut self) -> Result<(), Self::Error>

Wait until the pin is high. If it is already high, return immediately. Read more
Source§

async fn wait_for_low(&mut self) -> Result<(), Self::Error>

Wait until the pin is low. If it is already low, return immediately. Read more
Source§

async fn wait_for_rising_edge(&mut self) -> Result<(), Self::Error>

Wait for the pin to undergo a transition from low to high. Read more
Source§

async fn wait_for_falling_edge(&mut self) -> Result<(), Self::Error>

Wait for the pin to undergo a transition from high to low. Read more
Source§

async fn wait_for_any_edge(&mut self) -> Result<(), Self::Error>

Wait for the pin to undergo any transition, i.e low to high OR high to low.
Source§

impl PeripheralInput for Flex<'static>

Available on crate feature unstable only.
Source§

impl PeripheralOutput for Flex<'static>

Available on crate feature unstable only.

Auto Trait Implementations§

§

impl<'d> Freeze for Flex<'d>

§

impl<'d> RefUnwindSafe for Flex<'d>

§

impl<'d> Send for Flex<'d>

§

impl<'d> Sync for Flex<'d>

§

impl<'d> Unpin for Flex<'d>

§

impl<'d> !UnwindSafe for Flex<'d>

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.