Struct stm32wlxx_hal::gpio::Input

source ·
pub struct Input<P> { /* private fields */ }
Expand description

Input pin

Implementations§

source§

impl<P> Input<P>where P: PinOps,

source

pub fn new(pin: P, pull: Pull, cs: &CriticalSection) -> Self

Create a new input pin from a GPIO.

Example

Configure GPIO C6 as an input. This is the GPIO for button 3 on the NUCLEO-WL55JC2.

use stm32wlxx_hal::{
    gpio::{pins, Input, PortC, Pull},
    pac,
};

let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();

let gpioc: PortC = PortC::split(dp.GPIOC, &mut dp.RCC);
let mut c6: Input<pins::C6> =
    cortex_m::interrupt::free(|cs| Input::new(gpioc.c6, Pull::Up, cs));
source

pub fn default(pin: P, cs: &CriticalSection) -> Self

Create a new input pin from a GPIO with default settings.

Example

Configure GPIO C0 as an input.

use stm32wlxx_hal::{
    gpio::{pins, Input, PortC},
    pac,
};

let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();

let gpioc: PortC = PortC::split(dp.GPIOC, &mut dp.RCC);
let mut c0: Input<pins::C0> = cortex_m::interrupt::free(|cs| Input::default(gpioc.c0, cs));
source

pub unsafe fn steal() -> Self

Steal the input GPIO from whatever is currently using it.

Safety
  1. Ensure that the code stealing the GPIO has exclusive access to the peripheral. Singleton checks are bypassed with this method.
  2. You are responsible for setting up the GPIO correctly. No setup will occur when using this method.
Example
use stm32wlxx_hal::gpio::{pins, Input};

// ... setup occurs here

let c6: Input<pins::C6> = unsafe { Input::steal() };
source

pub fn free(self) -> P

Free the GPIO pin.

Example

Configure a GPIO as an input, then free it.

use stm32wlxx_hal::{
    gpio::{pins, Input, PortC},
    pac,
};

let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();

let gpioc: PortC = PortC::split(dp.GPIOC, &mut dp.RCC);
let c0_input: Input<pins::C0> = cortex_m::interrupt::free(|cs| Input::default(gpioc.c0, cs));
let c0: pins::C0 = c0_input.free();
source

pub fn level(&self) -> PinState

Get the input level.

Example

Get the input level of C6. This is the GPIO for button 3 on the NUCLEO-WL55JC2.

use stm32wlxx_hal::{
    gpio::{pins, Input, PinState, PortC, Pull},
    pac,
};

let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();

let gpioc: PortC = PortC::split(dp.GPIOC, &mut dp.RCC);
let mut c6: Input<pins::C6> =
    cortex_m::interrupt::free(|cs| Input::new(gpioc.c6, Pull::Up, cs));

let button_3_is_pressed: bool = c6.level() == PinState::High;

Trait Implementations§

source§

impl<P: Debug> Debug for Input<P>

source§

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

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

impl<P> InputPin for Input<P>where P: PinOps,

§

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?

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for Input<P>where P: RefUnwindSafe,

§

impl<P> Send for Input<P>where P: Send,

§

impl<P> Sync for Input<P>where P: Sync,

§

impl<P> Unpin for Input<P>where P: Unpin,

§

impl<P> UnwindSafe for Input<P>where P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere 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 Twhere 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.