aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32f4/src/exti.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/embassy-stm32f4/src/exti.rs b/embassy-stm32f4/src/exti.rs
index 11704e6d1..140b6330c 100644
--- a/embassy-stm32f4/src/exti.rs
+++ b/embassy-stm32f4/src/exti.rs
@@ -99,11 +99,12 @@ impl<T: gpio::ExtiPin + WithInterrupt + 'static> WaitForRisingEdge for ExtiPin<T
99 s.pin.clear_interrupt_pending_bit(); 99 s.pin.clear_interrupt_pending_bit();
100 async move { 100 async move {
101 let fut = InterruptFuture::new(&mut s.interrupt); 101 let fut = InterruptFuture::new(&mut s.interrupt);
102 let pin = &mut s.pin;
102 cortex_m::interrupt::free(|_| { 103 cortex_m::interrupt::free(|_| {
103 let mut exti: EXTI = unsafe { mem::transmute(()) }; 104 let mut exti: EXTI = unsafe { mem::transmute(()) };
104 105
105 s.pin.trigger_on_edge(&mut exti, Edge::RISING); 106 pin.trigger_on_edge(&mut exti, Edge::RISING);
106 s.pin.enable_interrupt(&mut exti); 107 pin.enable_interrupt(&mut exti);
107 }); 108 });
108 fut.await; 109 fut.await;
109 110
@@ -121,11 +122,12 @@ impl<T: gpio::ExtiPin + WithInterrupt + 'static> WaitForFallingEdge for ExtiPin<
121 s.pin.clear_interrupt_pending_bit(); 122 s.pin.clear_interrupt_pending_bit();
122 async move { 123 async move {
123 let fut = InterruptFuture::new(&mut s.interrupt); 124 let fut = InterruptFuture::new(&mut s.interrupt);
125 let pin = &mut s.pin;
124 cortex_m::interrupt::free(|_| { 126 cortex_m::interrupt::free(|_| {
125 let mut exti: EXTI = unsafe { mem::transmute(()) }; 127 let mut exti: EXTI = unsafe { mem::transmute(()) };
126 128
127 s.pin.trigger_on_edge(&mut exti, Edge::FALLING); 129 pin.trigger_on_edge(&mut exti, Edge::FALLING);
128 s.pin.enable_interrupt(&mut exti); 130 pin.enable_interrupt(&mut exti);
129 }); 131 });
130 fut.await; 132 fut.await;
131 133