//! Serial interface with dma #![deny(unsafe_code)] #![deny(warnings)] #![no_std] extern crate cortex_m; extern crate stm32f4x_hal as f4; use cortex_m::asm; use f4::prelude::*; use f4::serial::Serial; use f4::stm32f4x; fn main() { let p = stm32f4x::Peripherals::take().unwrap(); let mut flash = p.FLASH.constrain(); let mut rcc = p.RCC.constrain(); let mut gpioa = p.GPIOA.split(&mut rcc.ahb1); let streams = p.DMA1.split(&mut rcc.ahb1); let tx_stream = streams.1.into_channel4(); // S6<C4> let clocks = rcc.cfgr.freeze(&mut flash.acr); let tx = gpioa.pa2.into_af7(&mut gpioa.moder, &mut gpioa.afrl); let rx = gpioa.pa3.into_af7(&mut gpioa.moder, &mut gpioa.afrl); let serial = Serial::usart2(p.USART2, (tx, rx), 115_200.bps(), clocks, &mut rcc.apb1); let (tx, _) = serial.split(); let (_, c, tx) = tx.write_all(tx_stream, b"The quick brown fox").wait(); asm::bkpt(); let (_, c, tx) = tx.write_all(c, b" jumps").wait(); asm::bkpt(); tx.write_all(c, b" over the lazy dog.").wait(); asm::bkpt(); }