aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-rp/src/gpio.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/embassy-rp/src/gpio.rs b/embassy-rp/src/gpio.rs
index 28dfce476..aa3c3a646 100644
--- a/embassy-rp/src/gpio.rs
+++ b/embassy-rp/src/gpio.rs
@@ -131,6 +131,15 @@ impl<'d, T: Pin> Output<'d, T> {
131 let val = 1 << self.pin.pin(); 131 let val = 1 << self.pin.pin();
132 unsafe { (self.pin.sio_out().value().read() & val) == 0 } 132 unsafe { (self.pin.sio_out().value().read() & val) == 0 }
133 } 133 }
134
135 /// Toggle pin output
136 #[inline]
137 pub fn toggle(&mut self) {
138 let val = 1 << self.pin.pin();
139 unsafe {
140 self.pin.sio_out().value_xor().write_value(val);
141 }
142 }
134} 143}
135 144
136impl<'d, T: Pin> Drop for Output<'d, T> { 145impl<'d, T: Pin> Drop for Output<'d, T> {
@@ -295,6 +304,14 @@ mod eh02 {
295 Ok(self.is_set_low()) 304 Ok(self.is_set_low())
296 } 305 }
297 } 306 }
307
308 impl<'d, T: Pin> embedded_hal_02::digital::v2::ToggleableOutputPin for Output<'d, T> {
309 type Error = Infallible;
310 #[inline]
311 fn toggle(&mut self) -> Result<(), Self::Error> {
312 Ok(self.toggle())
313 }
314 }
298} 315}
299 316
300#[cfg(feature = "unstable-traits")] 317#[cfg(feature = "unstable-traits")]