#![no_std] #![no_main] use cortex_m_rt::entry; use defmt::*; use embassy_stm32::usart::{Config, Uart}; use embassy_stm32::{bind_interrupts, peripherals, usart}; use {defmt_rtt as _, panic_probe as _}; bind_interrupts!(struct Irqs { USART2 => usart::InterruptHandler; }); #[entry] fn main() -> ! { info!("Hello World!"); let p = embassy_stm32::init(Default::default()); let config = Config::default(); let mut usart = Uart::new_blocking(p.USART2, p.PA3, p.PA2, config).unwrap(); let desired_baudrate = 9600; // Default is 115200 and 9600 is used as example match usart.set_baudrate(desired_baudrate) { Ok(_) => info!("Baud rate set to {}", desired_baudrate), Err(err) => error!("Error setting baudrate to {}: {}", desired_baudrate, err), } unwrap!(usart.blocking_write(b"Hello Embassy World!\r\n")); info!("wrote Hello, starting echo"); let mut buf = [0u8; 1]; loop { unwrap!(usart.blocking_read(&mut buf)); unwrap!(usart.blocking_write(&buf)); } }