diff options
| author | chemicstry <[email protected]> | 2022-10-07 14:31:55 +0300 |
|---|---|---|
| committer | chemicstry <[email protected]> | 2022-10-07 14:31:55 +0300 |
| commit | df7174ecb03f466d4b97f2ce1a11e687317bd93a (patch) | |
| tree | bf3abbe1504a04f764e27dbf1e995b910477b483 /examples/stm32f4/src/bin/adc.rs | |
| parent | 9dca368c3dd1a8f00295b21c87d4fbb94afb60a5 (diff) | |
Fix internal channel reading on adc_v2
Diffstat (limited to 'examples/stm32f4/src/bin/adc.rs')
| -rw-r--r-- | examples/stm32f4/src/bin/adc.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/examples/stm32f4/src/bin/adc.rs b/examples/stm32f4/src/bin/adc.rs index 871185074..6f80c1ef1 100644 --- a/examples/stm32f4/src/bin/adc.rs +++ b/examples/stm32f4/src/bin/adc.rs | |||
| @@ -2,9 +2,10 @@ | |||
| 2 | #![no_main] | 2 | #![no_main] |
| 3 | #![feature(type_alias_impl_trait)] | 3 | #![feature(type_alias_impl_trait)] |
| 4 | 4 | ||
| 5 | use cortex_m::prelude::_embedded_hal_blocking_delay_DelayUs; | ||
| 5 | use defmt::*; | 6 | use defmt::*; |
| 6 | use embassy_executor::Spawner; | 7 | use embassy_executor::Spawner; |
| 7 | use embassy_stm32::adc::Adc; | 8 | use embassy_stm32::adc::{Adc, SampleTime, Temperature, VrefInt}; |
| 8 | use embassy_time::{Delay, Duration, Timer}; | 9 | use embassy_time::{Delay, Duration, Timer}; |
| 9 | use {defmt_rtt as _, panic_probe as _}; | 10 | use {defmt_rtt as _, panic_probe as _}; |
| 10 | 11 | ||
| @@ -13,12 +14,30 @@ async fn main(_spawner: Spawner) { | |||
| 13 | let p = embassy_stm32::init(Default::default()); | 14 | let p = embassy_stm32::init(Default::default()); |
| 14 | info!("Hello World!"); | 15 | info!("Hello World!"); |
| 15 | 16 | ||
| 16 | let mut adc = Adc::new(p.ADC1, &mut Delay); | 17 | let mut delay = Delay; |
| 18 | let mut adc = Adc::new(p.ADC1, &mut delay); | ||
| 17 | let mut pin = p.PC1; | 19 | let mut pin = p.PC1; |
| 18 | 20 | ||
| 21 | let mut vrefint = adc.enable_vrefint(); | ||
| 22 | let mut temp = adc.enable_temperature(); | ||
| 23 | |||
| 24 | // Startup delay can be combined to the maximum of either | ||
| 25 | delay.delay_us(Temperature::start_time_us().max(VrefInt::start_time_us())); | ||
| 26 | |||
| 19 | loop { | 27 | loop { |
| 28 | // Read pin | ||
| 20 | let v = adc.read(&mut pin); | 29 | let v = adc.read(&mut pin); |
| 21 | info!("--> {} - {} mV", v, adc.to_millivolts(v)); | 30 | info!("PC1: {} ({} mV)", v, adc.to_millivolts(v)); |
| 31 | |||
| 32 | // Read internal temperature | ||
| 33 | let v = adc.read_internal(&mut temp); | ||
| 34 | let celcius = Temperature::to_celcius(adc.to_millivolts(v)); | ||
| 35 | info!("Internal temp: {} ({} C)", v, celcius); | ||
| 36 | |||
| 37 | // Read internal voltage reference | ||
| 38 | let v = adc.read_internal(&mut vrefint); | ||
| 39 | info!("VrefInt: {} ({} mV)", v, adc.to_millivolts(v)); | ||
| 40 | |||
| 22 | Timer::after(Duration::from_millis(100)).await; | 41 | Timer::after(Duration::from_millis(100)).await; |
| 23 | } | 42 | } |
| 24 | } | 43 | } |
