stm32 gpio implement degrade to AnyPin
This commit is contained in:
parent
9af25c3396
commit
0bb6000e5c
@ -28,6 +28,21 @@ impl<'d, T: Pin> Flex<'d, T> {
|
|||||||
Self { pin }
|
Self { pin }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn degrade(mut self) -> Flex<'d, AnyPin> {
|
||||||
|
// Safety: We are about to drop the other copy of this pin, so
|
||||||
|
// this clone is safe.
|
||||||
|
let pin = unsafe { self.pin.clone_unchecked() };
|
||||||
|
|
||||||
|
// We don't want to run the destructor here, because that would
|
||||||
|
// deconfigure the pin.
|
||||||
|
core::mem::forget(self);
|
||||||
|
|
||||||
|
Flex {
|
||||||
|
pin: pin.map_into::<AnyPin>(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Put the pin into input mode.
|
/// Put the pin into input mode.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn set_as_input(&mut self, pull: Pull) {
|
pub fn set_as_input(&mut self, pull: Pull) {
|
||||||
@ -286,6 +301,13 @@ impl<'d, T: Pin> Input<'d, T> {
|
|||||||
Self { pin }
|
Self { pin }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn degrade(self) -> Input<'d, AnyPin> {
|
||||||
|
Input {
|
||||||
|
pin: self.pin.degrade(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_high(&self) -> bool {
|
pub fn is_high(&self) -> bool {
|
||||||
self.pin.is_high()
|
self.pin.is_high()
|
||||||
@ -345,6 +367,13 @@ impl<'d, T: Pin> Output<'d, T> {
|
|||||||
Self { pin }
|
Self { pin }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn degrade(self) -> Output<'d, AnyPin> {
|
||||||
|
Output {
|
||||||
|
pin: self.pin.degrade(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Set the output as high.
|
/// Set the output as high.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn set_high(&mut self) {
|
pub fn set_high(&mut self) {
|
||||||
@ -407,6 +436,13 @@ impl<'d, T: Pin> OutputOpenDrain<'d, T> {
|
|||||||
Self { pin }
|
Self { pin }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn degrade(self) -> Output<'d, AnyPin> {
|
||||||
|
Output {
|
||||||
|
pin: self.pin.degrade(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_high(&self) -> bool {
|
pub fn is_high(&self) -> bool {
|
||||||
!self.pin.is_low()
|
!self.pin.is_low()
|
||||||
|
Loading…
Reference in New Issue
Block a user