aboutsummaryrefslogtreecommitdiff
path: root/examples/src/bin/buffered_uart.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/src/bin/buffered_uart.rs')
-rw-r--r--examples/src/bin/buffered_uart.rs84
1 files changed, 0 insertions, 84 deletions
diff --git a/examples/src/bin/buffered_uart.rs b/examples/src/bin/buffered_uart.rs
deleted file mode 100644
index 6e15fbcfa..000000000
--- a/examples/src/bin/buffered_uart.rs
+++ /dev/null
@@ -1,84 +0,0 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5#[path = "../example_common.rs"]
6mod example_common;
7use example_common::*;
8
9use cortex_m_rt::entry;
10use defmt::panic;
11use futures::pin_mut;
12use nrf52840_hal::gpio;
13
14use embassy::executor::{task, Executor};
15use embassy::io::{AsyncBufRead, AsyncBufReadExt, AsyncWrite, AsyncWriteExt};
16use embassy::util::Forever;
17use embassy_nrf::buffered_uarte;
18use embassy_nrf::interrupt;
19
20#[task]
21async fn run() {
22 let p = unwrap!(embassy_nrf::pac::Peripherals::take());
23
24 let port0 = gpio::p0::Parts::new(p.P0);
25
26 let pins = buffered_uarte::Pins {
27 rxd: port0.p0_08.into_floating_input().degrade(),
28 txd: port0
29 .p0_06
30 .into_push_pull_output(gpio::Level::Low)
31 .degrade(),
32 cts: None,
33 rts: None,
34 };
35
36 let irq = interrupt::take!(UARTE0_UART0);
37 let u = buffered_uarte::BufferedUarte::new(
38 p.UARTE0,
39 irq,
40 pins,
41 buffered_uarte::Parity::EXCLUDED,
42 buffered_uarte::Baudrate::BAUD115200,
43 );
44 pin_mut!(u);
45
46 info!("uarte initialized!");
47
48 unwrap!(u.write_all(b"Hello!\r\n").await);
49 info!("wrote hello in uart!");
50
51 // Simple demo, reading 8-char chunks and echoing them back reversed.
52 loop {
53 info!("reading...");
54 let mut buf = [0u8; 8];
55 unwrap!(u.read_exact(&mut buf).await);
56 info!("read done, got {:[u8]}", buf);
57
58 // Reverse buf
59 for i in 0..4 {
60 let tmp = buf[i];
61 buf[i] = buf[7 - i];
62 buf[7 - i] = tmp;
63 }
64
65 info!("writing...");
66 unwrap!(u.write_all(&buf).await);
67 info!("write done");
68 }
69}
70
71static EXECUTOR: Forever<Executor> = Forever::new();
72
73#[entry]
74fn main() -> ! {
75 info!("Hello World!");
76
77 let executor = EXECUTOR.put(Executor::new(cortex_m::asm::sev));
78 unwrap!(executor.spawn(run()));
79
80 loop {
81 executor.run();
82 cortex_m::asm::wfe();
83 }
84}