diff options
| -rw-r--r-- | embassy-stm32/src/adc/f1.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/embassy-stm32/src/adc/f1.rs b/embassy-stm32/src/adc/f1.rs index fa6255c23..3cdc9d8fb 100644 --- a/embassy-stm32/src/adc/f1.rs +++ b/embassy-stm32/src/adc/f1.rs | |||
| @@ -4,8 +4,10 @@ use core::task::Poll; | |||
| 4 | 4 | ||
| 5 | use super::blocking_delay_us; | 5 | use super::blocking_delay_us; |
| 6 | use crate::adc::{Adc, AdcChannel, Instance, SampleTime}; | 6 | use crate::adc::{Adc, AdcChannel, Instance, SampleTime}; |
| 7 | use crate::interrupt::typelevel::Interrupt; | ||
| 8 | use crate::interrupt::{self}; | ||
| 7 | use crate::time::Hertz; | 9 | use crate::time::Hertz; |
| 8 | use crate::{interrupt, rcc, Peri}; | 10 | use crate::{rcc, Peri}; |
| 9 | 11 | ||
| 10 | pub const VDDA_CALIB_MV: u32 = 3300; | 12 | pub const VDDA_CALIB_MV: u32 = 3300; |
| 11 | pub const ADC_MAX: u32 = (1 << 12) - 1; | 13 | pub const ADC_MAX: u32 = (1 << 12) - 1; |
| @@ -20,12 +22,9 @@ pub struct InterruptHandler<T: Instance> { | |||
| 20 | impl<T: Instance> interrupt::typelevel::Handler<T::Interrupt> for InterruptHandler<T> { | 22 | impl<T: Instance> interrupt::typelevel::Handler<T::Interrupt> for InterruptHandler<T> { |
| 21 | unsafe fn on_interrupt() { | 23 | unsafe fn on_interrupt() { |
| 22 | if T::regs().sr().read().eoc() { | 24 | if T::regs().sr().read().eoc() { |
| 23 | T::regs().cr1().modify(|w| w.set_eocie(false)); | 25 | T::regs().cr1().modify(|w| w.set_eocie(false)); // End of Convert interrupt disable |
| 24 | } else { | 26 | T::state().waker.wake(); |
| 25 | return; | ||
| 26 | } | 27 | } |
| 27 | |||
| 28 | T::state().waker.wake(); | ||
| 29 | } | 28 | } |
| 30 | } | 29 | } |
| 31 | 30 | ||
| @@ -69,6 +68,9 @@ impl<'d, T: Instance> Adc<'d, T> { | |||
| 69 | // One cycle after calibration | 68 | // One cycle after calibration |
| 70 | blocking_delay_us((1_000_000 * 1) / Self::freq().0 + 1); | 69 | blocking_delay_us((1_000_000 * 1) / Self::freq().0 + 1); |
| 71 | 70 | ||
| 71 | T::Interrupt::unpend(); | ||
| 72 | unsafe { T::Interrupt::enable() }; | ||
| 73 | |||
| 72 | Self { | 74 | Self { |
| 73 | adc, | 75 | adc, |
| 74 | sample_time: SampleTime::from_bits(0), | 76 | sample_time: SampleTime::from_bits(0), |
