Embassy
embassy-rp

Crates

git

Versions

rp2040

Flavors

Struct embassy_rp::gpio::Flex

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

GPIO flexible pin.

This pin can be either an input or output pin. The output level register bit will remain set while not in output mode, so the pin’s level will be ‘remembered’ when it is not in output mode.

Implementations§

source§

impl<'d> Flex<'d>

source

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

Wrap the pin in a Flex.

The pin remains disconnected. The initial output level is unspecified, but can be changed before the pin is put into output mode.

source

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

Set the pin’s pull.

source

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

Set the pin’s drive strength.

source

pub fn set_slew_rate(&mut self, slew_rate: SlewRate)

Set the pin’s slew rate.

source

pub fn set_schmitt(&mut self, enable: bool)

Set the pin’s Schmitt trigger.

source

pub fn set_as_input(&mut self)

Put the pin into input mode.

The pull setting is left unchanged.

source

pub fn set_as_output(&mut self)

Put the pin into output mode.

The pin level will be whatever was set before (or low by default). If you want it to begin at a specific level, call set_high/set_low on the pin first.

source

pub fn toggle_set_as_output(&mut self)

Toggle output pin.

source

pub fn is_high(&self) -> bool

Get whether the pin input level is high.

source

pub fn is_low(&self) -> bool

Get whether the pin input level is low.

source

pub fn get_level(&self) -> Level

Returns current pin level

source

pub fn set_high(&mut self)

Set the output as high.

source

pub fn set_low(&mut self)

Set the output as low.

source

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

Set the output level.

source

pub fn is_set_high(&self) -> bool

Is the output level high?

source

pub fn is_set_low(&self) -> bool

Is the output level low?

source

pub fn get_output_level(&self) -> Level

What level output is set to

source

pub fn toggle(&mut self)

Toggle pin output

source

pub async fn wait_for_high(&mut self)

Wait until the pin is high. If it is already high, return immediately.

source

pub async fn wait_for_low(&mut self)

Wait until the pin is low. If it is already low, return immediately.

source

pub async fn wait_for_rising_edge(&mut self)

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

source

pub async fn wait_for_falling_edge(&mut self)

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

source

pub async fn wait_for_any_edge(&mut self)

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

source

pub fn dormant_wake(&mut self, cfg: DormantWakeConfig) -> DormantWake<'_>

Configure dormant wake.

Trait Implementations§

source§

impl<'d> Drop for Flex<'d>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'d> ErrorType for Flex<'d>

§

type Error = Infallible

Error type
source§

impl<'d> InputPin for Flex<'d>

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<'d> InputPin for Flex<'d>

§

type Error = Infallible

Error type
source§

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

Is the input pin high?
source§

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

Is the input pin low?
source§

impl<'d> OutputPin for Flex<'d>

source§

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

Drives the pin high. Read more
source§

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

Drives the pin low. 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<'d> OutputPin for Flex<'d>

§

type Error = Infallible

Error type
source§

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

Drives the pin high Read more
source§

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

Drives the pin low 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<'d> StatefulOutputPin for Flex<'d>

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<'d> StatefulOutputPin for Flex<'d>

source§

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

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

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

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

impl<'d> ToggleableOutputPin for Flex<'d>

§

type Error = Infallible

Error type
source§

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

Toggle pin output.
source§

impl<'d> Wait for Flex<'d>

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.

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§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

type Error = Infallible

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

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

Performs the conversion.
source§

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.
source§

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

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.