use stm32f1xx_hal::{delay::Delay, prelude::*, stm32}; use crate::application::App; pub fn setup(cp: cortex_m::peripheral::Peripherals, dp: stm32::Peripherals) -> App { // Take ownership over the raw flash and rcc devices and convert them into the corresponding // HAL structs let mut flash = dp.FLASH.constrain(); let mut rcc = dp.RCC.constrain(); // Freeze the configuration of all the clocks in the system and store the frozen frequencies in // `clocks` let clocks = rcc .cfgr .use_hse(8.mhz()) .sysclk(72.mhz()) .pclk1(36.mhz()) .freeze(&mut flash.acr); defmt::info!("Clock Setup done"); // Acquire the GPIOC peripheral let mut gpioc = dp.GPIOC.split(&mut rcc.apb2); let board_led = gpioc.pc13.into_push_pull_output(&mut gpioc.crh); let delay = Delay::new(cp.SYST, clocks); App { delay, board_led } }