獨(dú)立看門狗外設(shè)常用來檢測系統(tǒng)是否死機(jī)、系統(tǒng)卡死、指令跑飛等異常的場景。PY32F030 的獨(dú)立看門狗是一個(gè)獨(dú)立的 12 位向下計(jì)數(shù)器。由 LSI 提供時(shí)鐘。喂狗周期最長達(dá) 32 秒。
示例:examples/embassy_iwdg.rs
#![no_std]
#![no_main]
use py32f030_hal as hal;
use {defmt_rtt as _, panic_probe as _};
use embassy_executor::Spawner;
use embassy_time::Timer;
use hal::iwdg::{Config, IWdg};
#[embassy_executor::main]
asyncfn main(_spawner: Spawner) {
let p = hal::init(Default::default());
defmt::info!("Hello World!");
let config: Config = Default::default();
defmt::info!("iwdg timeout: {}us", config.timeout_us());
let iwdg = IWdg::new(p.IWdg, config);
iwdg.start();
letmut cnt: u32 = 0;
loop {
defmt::info!("time {} ", cnt);
iwdg.feed();
cnt += 1;
// 10 秒內(nèi)喂狗
if cnt <= 10 {
Timer::after_millis(1000).await;
} else {
// 10秒后等待喂狗超時(shí)
Timer::after_secs(30).await;
}
}
}
運(yùn)行:cargo r --example embassy_iwdg --features embassy