embassy-stm32

Crates

git

Versions

stm32h503cb

Flavors

embassy_stm32::gpio

Struct Flex

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

GPIO flexible pin.

This pin can either be a disconnected, input, or output pin, or both. The 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_as_input(&mut self, pull: Pull)

Put the pin into input mode.

The internal weak pull-up and pull-down resistors will be enabled according to pull.

Source

pub fn set_as_output(&mut self, speed: Speed)

Put the pin into push-pull 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.

The internal weak pull-up and pull-down resistors will be disabled.

Source

pub fn set_as_input_output(&mut self, speed: Speed)

Put the pin into input + open-drain output mode.

The hardware will drive the line low if you set it to low, and will leave it floating if you set it to high, in which case you can read the input to figure out whether another device is driving the line low.

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.

The internal weak pull-up and pull-down resistors will be disabled.

Source

pub fn set_as_input_output_pull(&mut self, speed: Speed, pull: Pull)

Put the pin into input + open-drain output mode with internal pullup or pulldown.

This works like Self::set_as_input_output(), but it also allows to enable the internal weak pull-up or pull-down resistors.

Source

pub fn set_as_analog(&mut self)

Put the pin into analog mode

This mode is used by ADC and COMP but usually there is no need to set this manually as the mode change is handled by the driver.

Source

pub fn set_as_af_unchecked(&mut self, af_num: u8, af_type: AfType)

Put the pin into AF mode, unchecked.

This puts the pin into the AF mode, with the requested number and AF type. This is completely unchecked, it can attach the pin to literally any peripheral, so use with care.

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

Get the current pin input level.

Source

pub fn is_set_high(&self) -> bool

Get whether the output level is set to high.

Source

pub fn is_set_low(&self) -> bool

Get whether the output level is set to low.

Source

pub fn get_output_level(&self) -> Level

Get the current output 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 toggle(&mut self)

Toggle the output level.

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>

Source§

type Error = Infallible

Error type
Source§

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

Source§

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

Source§

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

Source§

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

Is the output pin set as low?

Source§

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

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

impl<'d> StatefulOutputPin for Flex<'d>

Source§

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

Is the output pin set as low?

Source§

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

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

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

Toggle pin output.
Source§

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

Source§

type Error = Infallible

Error type
Source§

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

Toggle pin output.

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> 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<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<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.