diff options
| -rw-r--r-- | embassy-stm32/src/exti.rs | 26 | ||||
| -rw-r--r-- | examples/stm32f3/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32f7/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32g0/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32g4/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32h7/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32l0/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32l4/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32wb55/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32wl55/src/bin/button_exti.rs | 1 | ||||
| -rw-r--r-- | examples/stm32wl55/src/bin/subghz.rs | 1 |
12 files changed, 19 insertions, 18 deletions
diff --git a/embassy-stm32/src/exti.rs b/embassy-stm32/src/exti.rs index eded6ba71..b2f168882 100644 --- a/embassy-stm32/src/exti.rs +++ b/embassy-stm32/src/exti.rs | |||
| @@ -102,6 +102,18 @@ impl<'d, T: GpioPin> ExtiInput<'d, T> { | |||
| 102 | pub fn is_low(&self) -> bool { | 102 | pub fn is_low(&self) -> bool { |
| 103 | self.pin.is_low() | 103 | self.pin.is_low() |
| 104 | } | 104 | } |
| 105 | |||
| 106 | pub async fn wait_for_rising_edge<'a>(&'a mut self) { | ||
| 107 | ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, false).await | ||
| 108 | } | ||
| 109 | |||
| 110 | pub async fn wait_for_falling_edge<'a>(&'a mut self) { | ||
| 111 | ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), false, true).await | ||
| 112 | } | ||
| 113 | |||
| 114 | pub async fn wait_for_any_edge<'a>(&'a mut self) { | ||
| 115 | ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, true).await | ||
| 116 | } | ||
| 105 | } | 117 | } |
| 106 | 118 | ||
| 107 | impl<'d, T: GpioPin> InputPin for ExtiInput<'d, T> { | 119 | impl<'d, T: GpioPin> InputPin for ExtiInput<'d, T> { |
| @@ -120,10 +132,10 @@ impl<'d, T: GpioPin> WaitForRisingEdge for ExtiInput<'d, T> { | |||
| 120 | type Future<'a> | 132 | type Future<'a> |
| 121 | where | 133 | where |
| 122 | Self: 'a, | 134 | Self: 'a, |
| 123 | = ExtiInputFuture<'a>; | 135 | = impl Future<Output = ()> + 'a; |
| 124 | 136 | ||
| 125 | fn wait_for_rising_edge<'a>(&'a mut self) -> Self::Future<'a> { | 137 | fn wait_for_rising_edge<'a>(&'a mut self) -> Self::Future<'a> { |
| 126 | ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, false) | 138 | self.wait_for_rising_edge() |
| 127 | } | 139 | } |
| 128 | } | 140 | } |
| 129 | 141 | ||
| @@ -131,10 +143,10 @@ impl<'d, T: GpioPin> WaitForFallingEdge for ExtiInput<'d, T> { | |||
| 131 | type Future<'a> | 143 | type Future<'a> |
| 132 | where | 144 | where |
| 133 | Self: 'a, | 145 | Self: 'a, |
| 134 | = ExtiInputFuture<'a>; | 146 | = impl Future<Output = ()> + 'a; |
| 135 | 147 | ||
| 136 | fn wait_for_falling_edge<'a>(&'a mut self) -> Self::Future<'a> { | 148 | fn wait_for_falling_edge<'a>(&'a mut self) -> Self::Future<'a> { |
| 137 | ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), false, true) | 149 | self.wait_for_falling_edge() |
| 138 | } | 150 | } |
| 139 | } | 151 | } |
| 140 | 152 | ||
| @@ -142,14 +154,14 @@ impl<'d, T: GpioPin> WaitForAnyEdge for ExtiInput<'d, T> { | |||
| 142 | type Future<'a> | 154 | type Future<'a> |
| 143 | where | 155 | where |
| 144 | Self: 'a, | 156 | Self: 'a, |
| 145 | = ExtiInputFuture<'a>; | 157 | = impl Future<Output = ()> + 'a; |
| 146 | 158 | ||
| 147 | fn wait_for_any_edge<'a>(&'a mut self) -> Self::Future<'a> { | 159 | fn wait_for_any_edge<'a>(&'a mut self) -> Self::Future<'a> { |
| 148 | ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, true) | 160 | self.wait_for_any_edge() |
| 149 | } | 161 | } |
| 150 | } | 162 | } |
| 151 | 163 | ||
| 152 | pub struct ExtiInputFuture<'a> { | 164 | struct ExtiInputFuture<'a> { |
| 153 | pin: u8, | 165 | pin: u8, |
| 154 | phantom: PhantomData<&'a mut AnyPin>, | 166 | phantom: PhantomData<&'a mut AnyPin>, |
| 155 | } | 167 | } |
diff --git a/examples/stm32f3/src/bin/button_exti.rs b/examples/stm32f3/src/bin/button_exti.rs index d45e4365b..b11f38ea5 100644 --- a/examples/stm32f3/src/bin/button_exti.rs +++ b/examples/stm32f3/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32f4/src/bin/button_exti.rs b/examples/stm32f4/src/bin/button_exti.rs index 2c4318d64..852fbe3c6 100644 --- a/examples/stm32f4/src/bin/button_exti.rs +++ b/examples/stm32f4/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32f7/src/bin/button_exti.rs b/examples/stm32f7/src/bin/button_exti.rs index 2c4318d64..852fbe3c6 100644 --- a/examples/stm32f7/src/bin/button_exti.rs +++ b/examples/stm32f7/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32g0/src/bin/button_exti.rs b/examples/stm32g0/src/bin/button_exti.rs index 0c2483ecb..848818bf2 100644 --- a/examples/stm32g0/src/bin/button_exti.rs +++ b/examples/stm32g0/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32g4/src/bin/button_exti.rs b/examples/stm32g4/src/bin/button_exti.rs index 2c4318d64..852fbe3c6 100644 --- a/examples/stm32g4/src/bin/button_exti.rs +++ b/examples/stm32g4/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32h7/src/bin/button_exti.rs b/examples/stm32h7/src/bin/button_exti.rs index 2c4318d64..852fbe3c6 100644 --- a/examples/stm32h7/src/bin/button_exti.rs +++ b/examples/stm32h7/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32l0/src/bin/button_exti.rs b/examples/stm32l0/src/bin/button_exti.rs index 88c75ce6d..3edea3976 100644 --- a/examples/stm32l0/src/bin/button_exti.rs +++ b/examples/stm32l0/src/bin/button_exti.rs | |||
| @@ -9,7 +9,6 @@ use embassy::executor::Spawner; | |||
| 9 | use embassy_stm32::exti::ExtiInput; | 9 | use embassy_stm32::exti::ExtiInput; |
| 10 | use embassy_stm32::gpio::{Input, Pull}; | 10 | use embassy_stm32::gpio::{Input, Pull}; |
| 11 | use embassy_stm32::Peripherals; | 11 | use embassy_stm32::Peripherals; |
| 12 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 13 | use example_common::*; | 12 | use example_common::*; |
| 14 | 13 | ||
| 15 | fn config() -> embassy_stm32::Config { | 14 | fn config() -> embassy_stm32::Config { |
diff --git a/examples/stm32l4/src/bin/button_exti.rs b/examples/stm32l4/src/bin/button_exti.rs index 0c2483ecb..848818bf2 100644 --- a/examples/stm32l4/src/bin/button_exti.rs +++ b/examples/stm32l4/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32wb55/src/bin/button_exti.rs b/examples/stm32wb55/src/bin/button_exti.rs index aeb7bd8a6..4592fa308 100644 --- a/examples/stm32wb55/src/bin/button_exti.rs +++ b/examples/stm32wb55/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32wl55/src/bin/button_exti.rs b/examples/stm32wl55/src/bin/button_exti.rs index 31adfb5d1..8d66c7258 100644 --- a/examples/stm32wl55/src/bin/button_exti.rs +++ b/examples/stm32wl55/src/bin/button_exti.rs | |||
| @@ -8,7 +8,6 @@ use embassy::executor::Spawner; | |||
| 8 | use embassy_stm32::exti::ExtiInput; | 8 | use embassy_stm32::exti::ExtiInput; |
| 9 | use embassy_stm32::gpio::{Input, Pull}; | 9 | use embassy_stm32::gpio::{Input, Pull}; |
| 10 | use embassy_stm32::Peripherals; | 10 | use embassy_stm32::Peripherals; |
| 11 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | ||
| 12 | use example_common::*; | 11 | use example_common::*; |
| 13 | 12 | ||
| 14 | #[embassy::main] | 13 | #[embassy::main] |
diff --git a/examples/stm32wl55/src/bin/subghz.rs b/examples/stm32wl55/src/bin/subghz.rs index 570bd980f..42d4eb64c 100644 --- a/examples/stm32wl55/src/bin/subghz.rs +++ b/examples/stm32wl55/src/bin/subghz.rs | |||
| @@ -10,7 +10,6 @@ mod example_common; | |||
| 10 | 10 | ||
| 11 | use embassy::channel::signal::Signal; | 11 | use embassy::channel::signal::Signal; |
| 12 | use embassy::interrupt::{Interrupt, InterruptExt}; | 12 | use embassy::interrupt::{Interrupt, InterruptExt}; |
| 13 | use embassy::traits::gpio::WaitForRisingEdge; | ||
| 14 | use embassy_stm32::dma::NoDma; | 13 | use embassy_stm32::dma::NoDma; |
| 15 | use embassy_stm32::exti::ExtiInput; | 14 | use embassy_stm32::exti::ExtiInput; |
| 16 | use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; | 15 | use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; |
