summaryrefslogtreecommitdiff
path: root/examples/stm32f4/src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'examples/stm32f4/src/bin')
-rw-r--r--examples/stm32f4/src/bin/wdt.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/examples/stm32f4/src/bin/wdt.rs b/examples/stm32f4/src/bin/wdt.rs
new file mode 100644
index 00000000..41e1f4c7
--- /dev/null
+++ b/examples/stm32f4/src/bin/wdt.rs
@@ -0,0 +1,44 @@
+#![no_std]
+#![no_main]
+#![feature(type_alias_impl_trait)]
+
+use defmt::*;
+use embassy::executor::Spawner;
+use embassy::time::{Duration, Timer};
+use embassy_stm32::gpio::{Level, Output, Speed};
+use embassy_stm32::wdg::IndependentWatchdog;
+use embassy_stm32::Peripherals;
+use {defmt_rtt as _, panic_probe as _};
+
+#[embassy::main]
+async fn main(_spawner: Spawner, p: Peripherals) {
+ info!("Hello World!");
+
+ let mut led = Output::new(p.PB7, Level::High, Speed::Low);
+
+ let mut wdt = IndependentWatchdog::new(p.IWDG, Duration::from_secs(1));
+ unsafe {
+ wdt.unleash();
+ }
+
+ let mut i = 0;
+
+ loop {
+ info!("high");
+ led.set_high();
+ Timer::after(Duration::from_millis(300)).await;
+
+ info!("low");
+ led.set_low();
+ Timer::after(Duration::from_millis(300)).await;
+
+ if i < 5 {
+ info!("Petting watchdog");
+ unsafe {
+ wdt.pet();
+ }
+ }
+
+ i += 1;
+ }
+}