Я нашел что-то:
fn hertz_to_cycles(sysclock: Hertz, hertz: Hertz) -> Duration {
return (sysclock.0 / hertz.0).cycles();
}
#[init(schedule = [toggle])]
unsafe fn init() {
let mut rcc = device.RCC.constrain();
let mut flash = device.FLASH.constrain();
let clocks = rcc.cfgr.freeze(&mut flash.acr);
let sysclock = clocks.sysclk();
let period = hertz_to_cycles(sysclock, 2.hz());
schedule.toggle(Instant::now() + period).unwrap();
}
Надеюсь, мяч получит серьезный ответ.
По сути, планировщик основан на DWT (триггер точки наблюдения за данными), и у этой вещи есть для тактирования на частоте ядра, поэтому я пошел, чтобы получить ее там.