aboutsummaryrefslogtreecommitdiff
path: root/examples/nrf/src/bin/buffered_uart.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/nrf/src/bin/buffered_uart.rs')
-rw-r--r--examples/nrf/src/bin/buffered_uart.rs68
1 files changed, 68 insertions, 0 deletions
diff --git a/examples/nrf/src/bin/buffered_uart.rs b/examples/nrf/src/bin/buffered_uart.rs
new file mode 100644
index 000000000..c800e64fc
--- /dev/null
+++ b/examples/nrf/src/bin/buffered_uart.rs
@@ -0,0 +1,68 @@
1#![no_std]
2#![no_main]
3#![feature(min_type_alias_impl_trait)]
4#![feature(impl_trait_in_bindings)]
5#![feature(type_alias_impl_trait)]
6#![allow(incomplete_features)]
7
8#[path = "../example_common.rs"]
9mod example_common;
10
11use defmt::panic;
12use embassy::executor::Spawner;
13use embassy::io::{AsyncBufReadExt, AsyncWriteExt};
14use embassy_nrf::gpio::NoPin;
15use embassy_nrf::{buffered_uarte::BufferedUarte, interrupt, uarte, Peripherals};
16use example_common::*;
17use futures::pin_mut;
18
19#[embassy::main]
20async fn main(_spawner: Spawner, p: Peripherals) {
21 let mut config = uarte::Config::default();
22 config.parity = uarte::Parity::EXCLUDED;
23 config.baudrate = uarte::Baudrate::BAUD115200;
24
25 let mut tx_buffer = [0u8; 4096];
26 let mut rx_buffer = [0u8; 4096];
27
28 let irq = interrupt::take!(UARTE0_UART0);
29 let u = unsafe {
30 BufferedUarte::new(
31 p.UARTE0,
32 p.TIMER0,
33 p.PPI_CH0,
34 p.PPI_CH1,
35 irq,
36 p.P0_08,
37 p.P0_06,
38 NoPin,
39 NoPin,
40 config,
41 &mut rx_buffer,
42 &mut tx_buffer,
43 )
44 };
45 pin_mut!(u);
46
47 info!("uarte initialized!");
48
49 unwrap!(u.write_all(b"Hello!\r\n").await);
50 info!("wrote hello in uart!");
51
52 // Simple demo, reading 8-char chunks and echoing them back reversed.
53 loop {
54 info!("reading...");
55 let mut buf = [0u8; 8];
56 unwrap!(u.read_exact(&mut buf).await);
57 info!("read done, got {}", buf);
58
59 // Reverse buf
60 for i in 0..4 {
61 buf.swap(i, 7 - i);
62 }
63
64 info!("writing...");
65 unwrap!(u.write_all(&buf).await);
66 info!("write done");
67 }
68}