45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
#![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);
|
|
}
|
|
}
|