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,
impl<P> Input<P>where P: PinOps,
sourcepub fn new(pin: P, pull: Pull, cs: &CriticalSection) -> Self
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));
sourcepub fn default(pin: P, cs: &CriticalSection) -> Self
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));
sourcepub unsafe fn steal() -> Self
pub unsafe fn steal() -> Self
Steal the input GPIO from whatever is currently using it.
Safety
- Ensure that the code stealing the GPIO has exclusive access to the peripheral. Singleton checks are bypassed with this method.
- 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() };
sourcepub fn free(self) -> P
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();
sourcepub fn level(&self) -> PinState
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§
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more