diff --git a/src/main.rs b/src/main.rs index c305445eeaad80a8800f1325fa164b2689a8b61f..0ee0776052249acc347b469845972a8d457d2f6f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,6 +14,7 @@ mod app { gpio::{Output, PinState, PB15}, pac, prelude::*, + serial::{self, Serial}, }; #[shared] @@ -32,7 +33,11 @@ mod app { // Configure sysclk at 72MhZ, from HSI let rcc = dp.RCC.constrain(); let mut flash = dp.FLASH.constrain(); - let clocks = rcc.cfgr.sysclk(72.MHz()).freeze(&mut flash.acr); + let clocks = rcc + .cfgr + .use_hse(8.MHz()) + .sysclk(72.MHz()) + .freeze(&mut flash.acr); let systick_token = rtic_monotonics::create_systick_token!(); Systick::start(cp.SYST, 72_000_000, systick_token); @@ -65,6 +70,17 @@ mod app { ); calibrate_motors::spawn(motors).ok().unwrap(); + let tx = gpioa.pa2.into_alternate_push_pull(&mut gpioa.crl); + let rx = gpioa.pa3; + let mut serial = Serial::new( + dp.USART2, + (tx, rx), + &mut afio.mapr, + serial::Config::default().baudrate(115200.bps()), + &clocks, + ); + serial.tx.bwrite_all(b"Hello, world\r\n").unwrap(); + (Shared {}, Local {}) } @@ -86,16 +102,26 @@ mod app { Systick::delay(1.secs()).await; motors.move_both(Movement::Stop, Movement::Stop); motors.standby_leave(); - let speed = (max / 10) as i32; + let speed = (max / 2) as i32; let (forward, backward) = (Movement::Advance(speed), Movement::Advance(-speed)); defmt::info!("Left motor, forward 10%"); motors.move_both(forward, Movement::Stop); + Systick::delay(1.secs()).await; defmt::info!("Left motor, backward 10%"); motors.move_both(backward, Movement::Stop); + Systick::delay(1.secs()).await; defmt::info!("Right motor, forward 10%"); motors.move_both(Movement::Stop, forward); + Systick::delay(1.secs()).await; defmt::info!("Right motor, backward 10%"); motors.move_both(Movement::Stop, backward); + Systick::delay(1.secs()).await; + for i in 0..100 { + let val = max as i32 * i as i32 / 100; + motors.move_both(Movement::Advance(val), Movement::Advance(val)); + Systick::delay(30.millis()).await; + } + motors.move_both(Movement::Brake, Movement::Brake); defmt::info!("Returning to standby mode"); motors.standby_enter(); }