From 6ff0614cb63a6fd95bbb062bc15eeac9a24359f0 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Tue, 3 Aug 2021 15:17:04 +0200 Subject: Add uart::Read DMA-based implementation * Rename existing read() to bread() (blocking) --- examples/stm32f4/src/bin/usart.rs | 2 +- examples/stm32h7/src/bin/usart.rs | 2 +- examples/stm32l0/src/bin/usart_dma.rs | 42 +++++++++++++++++++++++++++++++++++ examples/stm32l4/src/bin/usart.rs | 2 +- 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 examples/stm32l0/src/bin/usart_dma.rs (limited to 'examples') diff --git a/examples/stm32f4/src/bin/usart.rs b/examples/stm32f4/src/bin/usart.rs index 8f0e04e57..40e862f58 100644 --- a/examples/stm32f4/src/bin/usart.rs +++ b/examples/stm32f4/src/bin/usart.rs @@ -33,7 +33,7 @@ fn main() -> ! { let mut buf = [0u8; 1]; loop { - usart.read(&mut buf).unwrap(); + usart.bread(&mut buf).unwrap(); usart.bwrite_all(&buf).unwrap(); } } diff --git a/examples/stm32h7/src/bin/usart.rs b/examples/stm32h7/src/bin/usart.rs index 11e04f33c..88420ae3e 100644 --- a/examples/stm32h7/src/bin/usart.rs +++ b/examples/stm32h7/src/bin/usart.rs @@ -34,7 +34,7 @@ async fn main_task() { let mut buf = [0u8; 1]; loop { - usart.read(&mut buf).unwrap(); + usart.bread(&mut buf).unwrap(); usart.bwrite_all(&buf).unwrap(); } } diff --git a/examples/stm32l0/src/bin/usart_dma.rs b/examples/stm32l0/src/bin/usart_dma.rs new file mode 100644 index 000000000..0a5859b75 --- /dev/null +++ b/examples/stm32l0/src/bin/usart_dma.rs @@ -0,0 +1,42 @@ +#![no_std] +#![no_main] +#![feature(trait_alias)] +#![feature(min_type_alias_impl_trait)] +#![feature(impl_trait_in_bindings)] +#![feature(type_alias_impl_trait)] +#![allow(incomplete_features)] + +#[path = "../example_common.rs"] +mod example_common; + +use example_common::*; + +use defmt::panic; +use embassy::executor::Spawner; +use embassy_stm32::usart::{Config, Uart}; +use embassy_stm32::{rcc, Peripherals}; +use embassy_traits::uart::{Read, Write}; + +#[embassy::main] +async fn main(_spawner: Spawner, mut p: Peripherals) { + let mut rcc = rcc::Rcc::new(p.RCC); + rcc.enable_debug_wfe(&mut p.DBGMCU, true); + + let mut usart = Uart::new( + p.USART1, + p.PB7, + p.PB6, + p.DMA1_CH2, + p.DMA1_CH3, + Config::default(), + ); + + usart.write(b"Hello Embassy World!\r\n").await.unwrap(); + info!("wrote Hello, starting echo"); + + let mut buf = [0; 1]; + loop { + usart.read(&mut buf[..]).await.unwrap(); + usart.write(&buf[..]).await.unwrap(); + } +} diff --git a/examples/stm32l4/src/bin/usart.rs b/examples/stm32l4/src/bin/usart.rs index 06abd41a2..c71825bf5 100644 --- a/examples/stm32l4/src/bin/usart.rs +++ b/examples/stm32l4/src/bin/usart.rs @@ -33,7 +33,7 @@ fn main() -> ! { let mut buf = [0u8; 1]; loop { - usart.read(&mut buf).unwrap(); + usart.bread(&mut buf).unwrap(); usart.bwrite_all(&buf).unwrap(); } } -- cgit From 0d02342b2d9fba686ae10caee8486141f20848c5 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Wed, 4 Aug 2021 08:34:30 +0200 Subject: Rename bread -> read_blocking --- examples/stm32f4/src/bin/usart.rs | 2 +- examples/stm32h7/src/bin/usart.rs | 2 +- examples/stm32l4/src/bin/usart.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'examples') diff --git a/examples/stm32f4/src/bin/usart.rs b/examples/stm32f4/src/bin/usart.rs index 40e862f58..a068df520 100644 --- a/examples/stm32f4/src/bin/usart.rs +++ b/examples/stm32f4/src/bin/usart.rs @@ -33,7 +33,7 @@ fn main() -> ! { let mut buf = [0u8; 1]; loop { - usart.bread(&mut buf).unwrap(); + usart.read_blocking(&mut buf).unwrap(); usart.bwrite_all(&buf).unwrap(); } } diff --git a/examples/stm32h7/src/bin/usart.rs b/examples/stm32h7/src/bin/usart.rs index 88420ae3e..7bdd3f000 100644 --- a/examples/stm32h7/src/bin/usart.rs +++ b/examples/stm32h7/src/bin/usart.rs @@ -34,7 +34,7 @@ async fn main_task() { let mut buf = [0u8; 1]; loop { - usart.bread(&mut buf).unwrap(); + usart.read_blocking(&mut buf).unwrap(); usart.bwrite_all(&buf).unwrap(); } } diff --git a/examples/stm32l4/src/bin/usart.rs b/examples/stm32l4/src/bin/usart.rs index c71825bf5..ebe06dc26 100644 --- a/examples/stm32l4/src/bin/usart.rs +++ b/examples/stm32l4/src/bin/usart.rs @@ -33,7 +33,7 @@ fn main() -> ! { let mut buf = [0u8; 1]; loop { - usart.bread(&mut buf).unwrap(); + usart.read_blocking(&mut buf).unwrap(); usart.bwrite_all(&buf).unwrap(); } } -- cgit