aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorIris Artin <[email protected]>2025-06-22 00:05:49 -0400
committerIris Artin <[email protected]>2025-06-26 21:07:12 -0400
commit440b94aecf5964aeda192eb8bb5d1d2b8648e7e4 (patch)
tree74576febc4b65f5c761f8805dd5f7a4a7bd61675 /examples
parent206a324cf4d612122356fb350b4a3b56391d6f20 (diff)
Added STM32 ADCv1 analog watchdog implementation
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32f0/src/bin/adc-watchdog.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/examples/stm32f0/src/bin/adc-watchdog.rs b/examples/stm32f0/src/bin/adc-watchdog.rs
new file mode 100644
index 000000000..ff98aac8e
--- /dev/null
+++ b/examples/stm32f0/src/bin/adc-watchdog.rs
@@ -0,0 +1,34 @@
1#![no_std]
2#![no_main]
3
4use defmt::*;
5use embassy_executor::Spawner;
6use embassy_stm32::adc::{self, Adc, WatchdogChannels};
7use embassy_stm32::bind_interrupts;
8use embassy_stm32::peripherals::ADC1;
9use {defmt_rtt as _, panic_probe as _};
10
11bind_interrupts!(struct Irqs {
12 ADC1_COMP => adc::InterruptHandler<ADC1>;
13});
14
15#[embassy_executor::main]
16async fn main(_spawner: Spawner) {
17 let p = embassy_stm32::init(Default::default());
18 info!("ADC watchdog example");
19
20 let mut adc = Adc::new(p.ADC1, Irqs);
21 let pin = p.PC1;
22
23 loop {
24 // Wait for pin to go high
25 adc.init_watchdog(WatchdogChannels::from_channel(&pin), 0, 0x07F);
26 let v_high = adc.monitor_watchdog().await;
27 info!("ADC sample is high {}", v_high);
28
29 // Wait for pin to go low
30 adc.init_watchdog(WatchdogChannels::from_channel(&pin), 0x01f, 0xFFF);
31 let v_low = adc.monitor_watchdog().await;
32 info!("ADC sample is low {}", v_low);
33 }
34}