diff options
| -rw-r--r-- | embassy-stm32/src/adc/mod.rs | 12 | ||||
| -rw-r--r-- | embassy-stm32/src/gpio.rs | 6 |
2 files changed, 11 insertions, 7 deletions
diff --git a/embassy-stm32/src/adc/mod.rs b/embassy-stm32/src/adc/mod.rs index 6d53d9b91..a55b99e6a 100644 --- a/embassy-stm32/src/adc/mod.rs +++ b/embassy-stm32/src/adc/mod.rs | |||
| @@ -77,7 +77,7 @@ trait SealedInstance { | |||
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | pub(crate) trait SealedAdcChannel<T> { | 79 | pub(crate) trait SealedAdcChannel<T> { |
| 80 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v4, adc_u5, adc_wba))] | 80 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v3, adc_v4, adc_u5, adc_wba))] |
| 81 | fn setup(&mut self) {} | 81 | fn setup(&mut self) {} |
| 82 | 82 | ||
| 83 | #[allow(unused)] | 83 | #[allow(unused)] |
| @@ -185,11 +185,11 @@ pub enum RegularConversionMode { | |||
| 185 | 185 | ||
| 186 | impl<'d, T: AnyInstance> Adc<'d, T> { | 186 | impl<'d, T: AnyInstance> Adc<'d, T> { |
| 187 | #[cfg(any( | 187 | #[cfg(any( |
| 188 | adc_v2, adc_g4, adc_v3, adc_g0, adc_h5, adc_h7rs, adc_u0, adc_u5, adc_v4, adc_wba, adc_c0 | 188 | adc_v2, adc_g4, adc_v3, adc_g0, adc_h5, adc_h7rs, adc_u0, adc_u5, adc_v3, adc_v4, adc_wba, adc_c0 |
| 189 | ))] | 189 | ))] |
| 190 | /// Read an ADC pin. | 190 | /// Read an ADC pin. |
| 191 | pub fn blocking_read(&mut self, channel: &mut impl AdcChannel<T>, sample_time: T::SampleTime) -> u16 { | 191 | pub fn blocking_read(&mut self, channel: &mut impl AdcChannel<T>, sample_time: T::SampleTime) -> u16 { |
| 192 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v4, adc_u5, adc_wba))] | 192 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v3, adc_v4, adc_u5, adc_wba))] |
| 193 | channel.setup(); | 193 | channel.setup(); |
| 194 | 194 | ||
| 195 | // Ensure no conversions are ongoing | 195 | // Ensure no conversions are ongoing |
| @@ -418,7 +418,7 @@ pub trait Instance: SealedInstance + crate::PeripheralType + crate::rcc::RccPeri | |||
| 418 | pub trait AdcChannel<T>: SealedAdcChannel<T> + Sized { | 418 | pub trait AdcChannel<T>: SealedAdcChannel<T> + Sized { |
| 419 | #[allow(unused_mut)] | 419 | #[allow(unused_mut)] |
| 420 | fn degrade_adc(mut self) -> AnyAdcChannel<T> { | 420 | fn degrade_adc(mut self) -> AnyAdcChannel<T> { |
| 421 | #[cfg(any(adc_v1, adc_l0, adc_v2, adc_g4, adc_v4, adc_u5, adc_wba))] | 421 | #[cfg(any(adc_v1, adc_l0, adc_v2, adc_g4, adc_v3, adc_v4, adc_u5, adc_wba))] |
| 422 | self.setup(); | 422 | self.setup(); |
| 423 | 423 | ||
| 424 | AnyAdcChannel { | 424 | AnyAdcChannel { |
| @@ -554,7 +554,7 @@ macro_rules! impl_adc_pin { | |||
| 554 | ($inst:ident, $pin:ident, $ch:expr) => { | 554 | ($inst:ident, $pin:ident, $ch:expr) => { |
| 555 | impl crate::adc::AdcChannel<peripherals::$inst> for crate::Peri<'_, crate::peripherals::$pin> {} | 555 | impl crate::adc::AdcChannel<peripherals::$inst> for crate::Peri<'_, crate::peripherals::$pin> {} |
| 556 | impl crate::adc::SealedAdcChannel<peripherals::$inst> for crate::Peri<'_, crate::peripherals::$pin> { | 556 | impl crate::adc::SealedAdcChannel<peripherals::$inst> for crate::Peri<'_, crate::peripherals::$pin> { |
| 557 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v4, adc_u5, adc_wba))] | 557 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v3, adc_v4, adc_u5, adc_wba))] |
| 558 | fn setup(&mut self) { | 558 | fn setup(&mut self) { |
| 559 | <crate::peripherals::$pin as crate::gpio::SealedPin>::set_as_analog(self); | 559 | <crate::peripherals::$pin as crate::gpio::SealedPin>::set_as_analog(self); |
| 560 | } | 560 | } |
| @@ -582,7 +582,7 @@ macro_rules! impl_adc_pair { | |||
| 582 | crate::Peri<'_, crate::peripherals::$npin>, | 582 | crate::Peri<'_, crate::peripherals::$npin>, |
| 583 | ) | 583 | ) |
| 584 | { | 584 | { |
| 585 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v4, adc_u5, adc_wba))] | 585 | #[cfg(any(adc_v1, adc_c0, adc_l0, adc_v2, adc_g4, adc_v3, adc_v4, adc_u5, adc_wba))] |
| 586 | fn setup(&mut self) { | 586 | fn setup(&mut self) { |
| 587 | <crate::peripherals::$pin as crate::gpio::SealedPin>::set_as_analog(&mut self.0); | 587 | <crate::peripherals::$pin as crate::gpio::SealedPin>::set_as_analog(&mut self.0); |
| 588 | <crate::peripherals::$npin as crate::gpio::SealedPin>::set_as_analog(&mut self.1); | 588 | <crate::peripherals::$npin as crate::gpio::SealedPin>::set_as_analog(&mut self.1); |
diff --git a/embassy-stm32/src/gpio.rs b/embassy-stm32/src/gpio.rs index e7d4e9ad3..5de8bad2c 100644 --- a/embassy-stm32/src/gpio.rs +++ b/embassy-stm32/src/gpio.rs | |||
| @@ -684,7 +684,11 @@ fn set_as_analog(pin_port: PinNumber) { | |||
| 684 | }); | 684 | }); |
| 685 | 685 | ||
| 686 | #[cfg(gpio_v2)] | 686 | #[cfg(gpio_v2)] |
| 687 | r.moder().modify(|w| w.set_moder(n, vals::Moder::ANALOG)); | 687 | { |
| 688 | #[cfg(any(stm32l47x, stm32l48x))] | ||
| 689 | r.ascr().modify(|w| w.set_asc(n, true)); | ||
| 690 | r.moder().modify(|w| w.set_moder(n, vals::Moder::ANALOG)); | ||
| 691 | } | ||
| 688 | } | 692 | } |
| 689 | 693 | ||
| 690 | #[inline(never)] | 694 | #[inline(never)] |
