TinFOC/src/main.rs
2024-05-09 15:02:13 -07:00

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);
}
}