aboutsummaryrefslogtreecommitdiff
path: root/tests/rp/src/bin/uart_dma.rs
diff options
context:
space:
mode:
authorpennae <[email protected]>2023-05-15 15:21:05 +0200
committerpennae <[email protected]>2023-05-15 15:24:56 +0200
commit14a5d03af2a74eccaa9930bdf81eef43791a4b33 (patch)
tree3a0879c21cf09702c670b14672e62b940a2157f0 /tests/rp/src/bin/uart_dma.rs
parent82f7e104d90a6628d1873017ea5ef6a7afb3b3f7 (diff)
rp: remove take!, add bind_interrupts!
Diffstat (limited to 'tests/rp/src/bin/uart_dma.rs')
-rw-r--r--tests/rp/src/bin/uart_dma.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/tests/rp/src/bin/uart_dma.rs b/tests/rp/src/bin/uart_dma.rs
index 52f42e582..75be76eda 100644
--- a/tests/rp/src/bin/uart_dma.rs
+++ b/tests/rp/src/bin/uart_dma.rs
@@ -4,12 +4,17 @@
4 4
5use defmt::{assert_eq, *}; 5use defmt::{assert_eq, *};
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_rp::bind_interrupts;
7use embassy_rp::gpio::{Level, Output}; 8use embassy_rp::gpio::{Level, Output};
8use embassy_rp::interrupt; 9use embassy_rp::peripherals::UART0;
9use embassy_rp::uart::{Async, Config, Error, Instance, Parity, Uart, UartRx}; 10use embassy_rp::uart::{Async, Config, Error, Instance, InterruptHandler, Parity, Uart, UartRx};
10use embassy_time::{Duration, Timer}; 11use embassy_time::{Duration, Timer};
11use {defmt_rtt as _, panic_probe as _}; 12use {defmt_rtt as _, panic_probe as _};
12 13
14bind_interrupts!(struct Irqs {
15 UART0_IRQ => InterruptHandler<UART0>;
16});
17
13async fn read<const N: usize>(uart: &mut Uart<'_, impl Instance, Async>) -> Result<[u8; N], Error> { 18async fn read<const N: usize>(uart: &mut Uart<'_, impl Instance, Async>) -> Result<[u8; N], Error> {
14 let mut buf = [255; N]; 19 let mut buf = [255; N];
15 uart.read(&mut buf).await?; 20 uart.read(&mut buf).await?;
@@ -51,7 +56,6 @@ async fn main(_spawner: Spawner) {
51 info!("Hello World!"); 56 info!("Hello World!");
52 57
53 let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0); 58 let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0);
54 let mut irq = interrupt::take!(UART0_IRQ);
55 59
56 // We can't send too many bytes, they have to fit in the FIFO. 60 // We can't send too many bytes, they have to fit in the FIFO.
57 // This is because we aren't sending+receiving at the same time. 61 // This is because we aren't sending+receiving at the same time.
@@ -61,7 +65,7 @@ async fn main(_spawner: Spawner) {
61 &mut uart, 65 &mut uart,
62 &mut tx, 66 &mut tx,
63 &mut rx, 67 &mut rx,
64 &mut irq, 68 Irqs,
65 &mut p.DMA_CH0, 69 &mut p.DMA_CH0,
66 &mut p.DMA_CH1, 70 &mut p.DMA_CH1,
67 config, 71 config,
@@ -82,7 +86,7 @@ async fn main(_spawner: Spawner) {
82 &mut uart, 86 &mut uart,
83 &mut tx, 87 &mut tx,
84 &mut rx, 88 &mut rx,
85 &mut irq, 89 Irqs,
86 &mut p.DMA_CH0, 90 &mut p.DMA_CH0,
87 &mut p.DMA_CH1, 91 &mut p.DMA_CH1,
88 config, 92 config,
@@ -111,7 +115,7 @@ async fn main(_spawner: Spawner) {
111 &mut uart, 115 &mut uart,
112 &mut tx, 116 &mut tx,
113 &mut rx, 117 &mut rx,
114 &mut irq, 118 Irqs,
115 &mut p.DMA_CH0, 119 &mut p.DMA_CH0,
116 &mut p.DMA_CH1, 120 &mut p.DMA_CH1,
117 config, 121 config,
@@ -154,7 +158,7 @@ async fn main(_spawner: Spawner) {
154 let mut config = Config::default(); 158 let mut config = Config::default();
155 config.baudrate = 1000; 159 config.baudrate = 1000;
156 config.parity = Parity::ParityEven; 160 config.parity = Parity::ParityEven;
157 let mut uart = UartRx::new(&mut uart, &mut rx, &mut irq, &mut p.DMA_CH0, config); 161 let mut uart = UartRx::new(&mut uart, &mut rx, Irqs, &mut p.DMA_CH0, config);
158 162
159 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) { 163 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) {
160 send(pin, v, Some(parity != 0)).await; 164 send(pin, v, Some(parity != 0)).await;
@@ -199,7 +203,7 @@ async fn main(_spawner: Spawner) {
199 // choose a very slow baud rate to make tests reliable even with O0 203 // choose a very slow baud rate to make tests reliable even with O0
200 let mut config = Config::default(); 204 let mut config = Config::default();
201 config.baudrate = 1000; 205 config.baudrate = 1000;
202 let mut uart = UartRx::new(&mut uart, &mut rx, &mut irq, &mut p.DMA_CH0, config); 206 let mut uart = UartRx::new(&mut uart, &mut rx, Irqs, &mut p.DMA_CH0, config);
203 207
204 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) { 208 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) {
205 if good { 209 if good {