diff options
Diffstat (limited to 'examples/stm32f3/src/bin/spi_dma.rs')
-rw-r--r-- | examples/stm32f3/src/bin/spi_dma.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/examples/stm32f3/src/bin/spi_dma.rs b/examples/stm32f3/src/bin/spi_dma.rs new file mode 100644 index 00000000..a87a36f7 --- /dev/null +++ b/examples/stm32f3/src/bin/spi_dma.rs @@ -0,0 +1,41 @@ +#![no_std] +#![no_main] +#![feature(type_alias_impl_trait)] + +#[path = "../example_common.rs"] +mod example_common; +use core::fmt::Write; +use core::str::from_utf8; +use embassy::executor::Spawner; +use embassy_stm32::spi::{Config, Spi}; +use embassy_stm32::time::Hertz; +use embassy_stm32::Peripherals; +use embassy_traits::spi::FullDuplex; +use example_common::*; +use heapless::String; + +#[embassy::main] +async fn main(_spawner: Spawner, p: Peripherals) { + info!("Hello World!"); + + let mut spi = Spi::new( + p.SPI1, + p.PB3, + p.PB5, + p.PB4, + p.DMA1_CH3, + p.DMA1_CH2, + Hertz(1_000_000), + Config::default(), + ); + + for n in 0u32.. { + let mut write: String<128> = String::new(); + let mut read = [0; 128]; + core::write!(&mut write, "Hello DMA World {}!\r\n", n).unwrap(); + spi.read_write(&mut read[0..write.len()], write.as_bytes()) + .await + .ok(); + info!("read via spi+dma: {}", from_utf8(&read).unwrap()); + } +} |