#[idle] fn idle(_: idle::Context) -> ! { loop { // re-initialize PLL dp.RCC.cr.modify(|_, w| w.hseon().bit(true)); while dp.RCC.cr.read().hserdy().bit_is_clear() {} dp.RCC.cfgr .modify(|_, w| unsafe { w.sw().bits(input_src.bits()) }); dp.RCC.cr.modify(|_, w| w.pllon().set_bit()); while dp.RCC.cr.read().pllrdy().bit_is_clear() {} // Do other idle tasks // Select the low power mode to enter. For example, here is // stop 2 cp.set_sleepdeep(); dp.PWR.cr1.modify(|_, w| w.lpms().bits(0b010); } }