diff options
| author | pennae <[email protected]> | 2023-05-15 15:21:05 +0200 |
|---|---|---|
| committer | pennae <[email protected]> | 2023-05-15 15:24:56 +0200 |
| commit | 14a5d03af2a74eccaa9930bdf81eef43791a4b33 (patch) | |
| tree | 3a0879c21cf09702c670b14672e62b940a2157f0 /tests/rp/src/bin/uart_dma.rs | |
| parent | 82f7e104d90a6628d1873017ea5ef6a7afb3b3f7 (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.rs | 20 |
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 | ||
| 5 | use defmt::{assert_eq, *}; | 5 | use defmt::{assert_eq, *}; |
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_rp::bind_interrupts; | ||
| 7 | use embassy_rp::gpio::{Level, Output}; | 8 | use embassy_rp::gpio::{Level, Output}; |
| 8 | use embassy_rp::interrupt; | 9 | use embassy_rp::peripherals::UART0; |
| 9 | use embassy_rp::uart::{Async, Config, Error, Instance, Parity, Uart, UartRx}; | 10 | use embassy_rp::uart::{Async, Config, Error, Instance, InterruptHandler, Parity, Uart, UartRx}; |
| 10 | use embassy_time::{Duration, Timer}; | 11 | use embassy_time::{Duration, Timer}; |
| 11 | use {defmt_rtt as _, panic_probe as _}; | 12 | use {defmt_rtt as _, panic_probe as _}; |
| 12 | 13 | ||
| 14 | bind_interrupts!(struct Irqs { | ||
| 15 | UART0_IRQ => InterruptHandler<UART0>; | ||
| 16 | }); | ||
| 17 | |||
| 13 | async fn read<const N: usize>(uart: &mut Uart<'_, impl Instance, Async>) -> Result<[u8; N], Error> { | 18 | async 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 { |
