#![no_std] #![no_main] use stm32f3xx_hal::{self as hal, adc, pac, prelude::*}; use {defmt_rtt as _, panic_halt as _}; static POT_MAX: u16 = 4095; mod motor; //use motor::*; #[cortex_m_rt::entry] fn main() -> ! { let sp = pac::Peripherals::take().unwrap(); let mut rcc = sp.RCC.constrain(); let mut gpiob = sp.GPIOB.split(&mut rcc.ahb); let mut led = gpiob .pb2 .into_push_pull_output(&mut gpiob.moder, &mut gpiob.otyper); let mut pot = gpiob.pb1.into_analog(&mut gpiob.moder, &mut gpiob.pupdr); let mut flash = sp.FLASH.constrain(); let clocks = rcc.cfgr.freeze(&mut flash.acr); let cp = cortex_m::Peripherals::take().unwrap(); let mut delay = hal::delay::Delay::new(cp.SYST, clocks); let adc_common = adc::CommonAdc::new(sp.ADC1_2, &clocks, &mut rcc.ahb); let mut padc = adc::Adc::new( sp.ADC1, adc::config::Config::default(), &clocks, &adc_common, ); loop { let pot_out: u16 = padc.read(&mut pot).unwrap_or(0); let pot_out = (POT_MAX - pot_out) as f32 / POT_MAX as f32; let pot_out = (4000.0 * pot_out) as u32; led.toggle().unwrap(); delay.delay_ms(pot_out); } }