diff options
| author | xoviat <[email protected]> | 2025-11-12 20:06:00 -0600 |
|---|---|---|
| committer | xoviat <[email protected]> | 2025-11-12 20:06:00 -0600 |
| commit | f0506252e21c96ce3b03e0d1c061a831d7dfe3c3 (patch) | |
| tree | 839f8dac139321665abc293f907ad13d5721aede /examples/stm32wba6 | |
| parent | 07c918023c1b233a2f9f16eb0b654169c0379f79 (diff) | |
stm32: extract adc4
extract adc4 into common adc system and add anyInstance trait to cover adc4 and not adc4
Diffstat (limited to 'examples/stm32wba6')
| -rw-r--r-- | examples/stm32wba6/src/bin/adc.rs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/examples/stm32wba6/src/bin/adc.rs b/examples/stm32wba6/src/bin/adc.rs index 0887e124c..9d1f39419 100644 --- a/examples/stm32wba6/src/bin/adc.rs +++ b/examples/stm32wba6/src/bin/adc.rs | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | #![no_main] | 2 | #![no_main] |
| 3 | 3 | ||
| 4 | use defmt::*; | 4 | use defmt::*; |
| 5 | use embassy_stm32::adc::{AdcChannel, adc4}; | 5 | use embassy_stm32::adc::{Adc, AdcChannel, SampleTime, adc4}; |
| 6 | use {defmt_rtt as _, panic_probe as _}; | 6 | use {defmt_rtt as _, panic_probe as _}; |
| 7 | 7 | ||
| 8 | #[embassy_executor::main] | 8 | #[embassy_executor::main] |
| @@ -12,11 +12,11 @@ async fn main(_spawner: embassy_executor::Spawner) { | |||
| 12 | let mut p = embassy_stm32::init(config); | 12 | let mut p = embassy_stm32::init(config); |
| 13 | 13 | ||
| 14 | // **** ADC4 init **** | 14 | // **** ADC4 init **** |
| 15 | let mut adc4 = adc4::Adc4::new(p.ADC4); | 15 | let mut adc4 = Adc::new_adc4(p.ADC4); |
| 16 | let mut adc4_pin1 = p.PA0; // A4 | 16 | let mut adc4_pin1 = p.PA0; // A4 |
| 17 | let mut adc4_pin2 = p.PA1; // A5 | 17 | let mut adc4_pin2 = p.PA1; // A5 |
| 18 | adc4.set_resolution(adc4::Resolution::BITS12); | 18 | adc4.set_resolution_adc4(adc4::Resolution::BITS12); |
| 19 | adc4.set_averaging(adc4::Averaging::Samples256); | 19 | adc4.set_averaging_adc4(adc4::Averaging::Samples256); |
| 20 | let max4 = adc4::resolution_to_max_count(adc4::Resolution::BITS12); | 20 | let max4 = adc4::resolution_to_max_count(adc4::Resolution::BITS12); |
| 21 | 21 | ||
| 22 | // **** ADC4 blocking read **** | 22 | // **** ADC4 blocking read **** |
| @@ -36,11 +36,14 @@ async fn main(_spawner: embassy_executor::Spawner) { | |||
| 36 | // The channels must be in ascending order and can't repeat for ADC4 | 36 | // The channels must be in ascending order and can't repeat for ADC4 |
| 37 | adc4.read( | 37 | adc4.read( |
| 38 | p.GPDMA1_CH1.reborrow(), | 38 | p.GPDMA1_CH1.reborrow(), |
| 39 | [&mut degraded42, &mut degraded41].into_iter(), | 39 | [ |
| 40 | (&mut degraded42, SampleTime::CYCLES12_5), | ||
| 41 | (&mut degraded41, SampleTime::CYCLES12_5), | ||
| 42 | ] | ||
| 43 | .into_iter(), | ||
| 40 | &mut measurements, | 44 | &mut measurements, |
| 41 | ) | 45 | ) |
| 42 | .await | 46 | .await; |
| 43 | .unwrap(); | ||
| 44 | let volt2: f32 = 3.3 * measurements[0] as f32 / max4 as f32; | 47 | let volt2: f32 = 3.3 * measurements[0] as f32 / max4 as f32; |
| 45 | let volt1: f32 = 3.0 * measurements[1] as f32 / max4 as f32; | 48 | let volt1: f32 = 3.0 * measurements[1] as f32 / max4 as f32; |
| 46 | info!("Async read 4 pin 1 {}", volt1); | 49 | info!("Async read 4 pin 1 {}", volt1); |
