From 9a57deef9b531b8dae9d98a5accf5aeb128ab86d Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Tue, 22 Sep 2020 18:03:43 +0200 Subject: First commit --- examples/src/bin/uart.rs | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 examples/src/bin/uart.rs (limited to 'examples/src/bin/uart.rs') diff --git a/examples/src/bin/uart.rs b/examples/src/bin/uart.rs new file mode 100644 index 000000000..21e26e3ad --- /dev/null +++ b/examples/src/bin/uart.rs @@ -0,0 +1,72 @@ +#![no_std] +#![no_main] +#![feature(type_alias_impl_trait)] + +#[path = "../example_common.rs"] +mod example_common; +use example_common::*; + +use cortex_m_rt::entry; +use embassy::io::{AsyncBufRead, AsyncBufReadExt, AsyncWrite, AsyncWriteExt}; +use embassy_nrf::uarte; +use futures::pin_mut; +use nrf52840_hal::gpio; + +#[static_executor::task] +async fn run() { + let p = embassy_nrf::pac::Peripherals::take().dewrap(); + + let port0 = gpio::p0::Parts::new(p.P0); + + let pins = uarte::Pins { + rxd: port0.p0_08.into_floating_input().degrade(), + txd: port0 + .p0_06 + .into_push_pull_output(gpio::Level::Low) + .degrade(), + cts: None, + rts: None, + }; + + let u = uarte::Uarte::new( + p.UARTE0, + pins, + uarte::Parity::EXCLUDED, + uarte::Baudrate::BAUD115200, + ); + pin_mut!(u); + + info!("uarte initialized!"); + + u.write_all(b"Hello!\r\n").await.dewrap(); + info!("wrote hello in uart!"); + + // Simple demo, reading 8-char chunks and echoing them back reversed. + loop { + info!("reading..."); + let mut buf = [0u8; 8]; + u.read_exact(&mut buf).await.dewrap(); + info!("read done, got {:[u8]}", buf); + + // Reverse buf + for i in 0..4 { + let tmp = buf[i]; + buf[i] = buf[7 - i]; + buf[7 - i] = tmp; + } + + info!("writing..."); + u.write_all(&buf).await.dewrap(); + info!("write done"); + } +} + +#[entry] +fn main() -> ! { + info!("Hello World!"); + + unsafe { + run.spawn().dewrap(); + static_executor::run(); + } +} -- cgit