Skip to content

Commit cf6a27d

Browse files
authored
Merge pull request #4967 from hjeldin/main
fix: stm32l47*/stm32l48* adc analog pin setup
2 parents fcd5383 + 20a0f1b commit cf6a27d

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

embassy-stm32/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8686
- feat: stm32/lcd: added implementation
8787
- change: add error messages to can timing calculations ([#4961](https://github.com/embassy-rs/embassy/pull/4961))
8888
- fix: stm32/i2c v2: add stop flag on stop received
89+
- fix: stm32l47*/stm32l48* adc analog pin setup
8990

9091
## 0.4.0 - 2025-08-26
9192

embassy-stm32/src/adc/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ trait SealedInstance {
7777
}
7878

7979
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))]
8181
fn setup(&mut self) {}
8282

8383
#[allow(unused)]
@@ -185,11 +185,11 @@ pub enum RegularConversionMode {
185185

186186
impl<'d, T: AnyInstance> Adc<'d, T> {
187187
#[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
189189
))]
190190
/// Read an ADC pin.
191191
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))]
193193
channel.setup();
194194

195195
// Ensure no conversions are ongoing
@@ -418,7 +418,7 @@ pub trait Instance: SealedInstance + crate::PeripheralType + crate::rcc::RccPeri
418418
pub trait AdcChannel<T>: SealedAdcChannel<T> + Sized {
419419
#[allow(unused_mut)]
420420
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))]
422422
self.setup();
423423

424424
AnyAdcChannel {
@@ -554,7 +554,7 @@ macro_rules! impl_adc_pin {
554554
($inst:ident, $pin:ident, $ch:expr) => {
555555
impl crate::adc::AdcChannel<peripherals::$inst> for crate::Peri<'_, crate::peripherals::$pin> {}
556556
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))]
558558
fn setup(&mut self) {
559559
<crate::peripherals::$pin as crate::gpio::SealedPin>::set_as_analog(self);
560560
}
@@ -582,7 +582,7 @@ macro_rules! impl_adc_pair {
582582
crate::Peri<'_, crate::peripherals::$npin>,
583583
)
584584
{
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))]
586586
fn setup(&mut self) {
587587
<crate::peripherals::$pin as crate::gpio::SealedPin>::set_as_analog(&mut self.0);
588588
<crate::peripherals::$npin as crate::gpio::SealedPin>::set_as_analog(&mut self.1);

embassy-stm32/src/gpio.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,11 @@ fn set_as_analog(pin_port: PinNumber) {
684684
});
685685

686686
#[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+
}
688692
}
689693

690694
#[inline(never)]

0 commit comments

Comments
 (0)