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_buffered.rs | |
| parent | 82f7e104d90a6628d1873017ea5ef6a7afb3b3f7 (diff) | |
rp: remove take!, add bind_interrupts!
Diffstat (limited to 'tests/rp/src/bin/uart_buffered.rs')
| -rw-r--r-- | tests/rp/src/bin/uart_buffered.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/tests/rp/src/bin/uart_buffered.rs b/tests/rp/src/bin/uart_buffered.rs index 1deb22ce6..1dcf57d07 100644 --- a/tests/rp/src/bin/uart_buffered.rs +++ b/tests/rp/src/bin/uart_buffered.rs | |||
| @@ -4,13 +4,18 @@ | |||
| 4 | 4 | ||
| 5 | use defmt::{assert_eq, panic, *}; | 5 | use defmt::{assert_eq, panic, *}; |
| 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::{BufferedUart, BufferedUartRx, Config, Error, Instance, Parity}; | 10 | use embassy_rp::uart::{BufferedInterruptHandler, BufferedUart, BufferedUartRx, Config, Error, Instance, Parity}; |
| 10 | use embassy_time::{Duration, Timer}; | 11 | use embassy_time::{Duration, Timer}; |
| 11 | use embedded_io::asynch::{Read, ReadExactError, Write}; | 12 | use embedded_io::asynch::{Read, ReadExactError, Write}; |
| 12 | use {defmt_rtt as _, panic_probe as _}; | 13 | use {defmt_rtt as _, panic_probe as _}; |
| 13 | 14 | ||
| 15 | bind_interrupts!(struct Irqs { | ||
| 16 | UART0_IRQ => BufferedInterruptHandler<UART0>; | ||
| 17 | }); | ||
| 18 | |||
| 14 | async fn read<const N: usize>(uart: &mut BufferedUart<'_, impl Instance>) -> Result<[u8; N], Error> { | 19 | async fn read<const N: usize>(uart: &mut BufferedUart<'_, impl Instance>) -> Result<[u8; N], Error> { |
| 15 | let mut buf = [255; N]; | 20 | let mut buf = [255; N]; |
| 16 | match uart.read_exact(&mut buf).await { | 21 | match uart.read_exact(&mut buf).await { |
| @@ -60,13 +65,12 @@ async fn main(_spawner: Spawner) { | |||
| 60 | info!("Hello World!"); | 65 | info!("Hello World!"); |
| 61 | 66 | ||
| 62 | let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0); | 67 | let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0); |
| 63 | let mut irq = interrupt::take!(UART0_IRQ); | ||
| 64 | 68 | ||
| 65 | { | 69 | { |
| 66 | let config = Config::default(); | 70 | let config = Config::default(); |
| 67 | let tx_buf = &mut [0u8; 16]; | 71 | let tx_buf = &mut [0u8; 16]; |
| 68 | let rx_buf = &mut [0u8; 16]; | 72 | let rx_buf = &mut [0u8; 16]; |
| 69 | let mut uart = BufferedUart::new(&mut uart, &mut irq, &mut tx, &mut rx, tx_buf, rx_buf, config); | 73 | let mut uart = BufferedUart::new(&mut uart, Irqs, &mut tx, &mut rx, tx_buf, rx_buf, config); |
| 70 | 74 | ||
| 71 | // Make sure we send more bytes than fits in the FIFO, to test the actual | 75 | // Make sure we send more bytes than fits in the FIFO, to test the actual |
| 72 | // bufferedUart. | 76 | // bufferedUart. |
| @@ -86,7 +90,7 @@ async fn main(_spawner: Spawner) { | |||
| 86 | let config = Config::default(); | 90 | let config = Config::default(); |
| 87 | let tx_buf = &mut [0u8; 16]; | 91 | let tx_buf = &mut [0u8; 16]; |
| 88 | let rx_buf = &mut [0u8; 16]; | 92 | let rx_buf = &mut [0u8; 16]; |
| 89 | let mut uart = BufferedUart::new(&mut uart, &mut irq, &mut tx, &mut rx, tx_buf, rx_buf, config); | 93 | let mut uart = BufferedUart::new(&mut uart, Irqs, &mut tx, &mut rx, tx_buf, rx_buf, config); |
| 90 | 94 | ||
| 91 | // Make sure we send more bytes than fits in the FIFO, to test the actual | 95 | // Make sure we send more bytes than fits in the FIFO, to test the actual |
| 92 | // bufferedUart. | 96 | // bufferedUart. |
| @@ -121,7 +125,7 @@ async fn main(_spawner: Spawner) { | |||
| 121 | config.baudrate = 1000; | 125 | config.baudrate = 1000; |
| 122 | let tx_buf = &mut [0u8; 16]; | 126 | let tx_buf = &mut [0u8; 16]; |
| 123 | let rx_buf = &mut [0u8; 16]; | 127 | let rx_buf = &mut [0u8; 16]; |
| 124 | let mut uart = BufferedUart::new(&mut uart, &mut irq, &mut tx, &mut rx, tx_buf, rx_buf, config); | 128 | let mut uart = BufferedUart::new(&mut uart, Irqs, &mut tx, &mut rx, tx_buf, rx_buf, config); |
| 125 | 129 | ||
| 126 | // break on empty buffer | 130 | // break on empty buffer |
| 127 | uart.send_break(20).await; | 131 | uart.send_break(20).await; |
| @@ -155,7 +159,7 @@ async fn main(_spawner: Spawner) { | |||
| 155 | config.baudrate = 1000; | 159 | config.baudrate = 1000; |
| 156 | config.parity = Parity::ParityEven; | 160 | config.parity = Parity::ParityEven; |
| 157 | let rx_buf = &mut [0u8; 16]; | 161 | let rx_buf = &mut [0u8; 16]; |
| 158 | let mut uart = BufferedUartRx::new(&mut uart, &mut irq, &mut rx, rx_buf, config); | 162 | let mut uart = BufferedUartRx::new(&mut uart, Irqs, &mut rx, rx_buf, config); |
| 159 | 163 | ||
| 160 | async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) { | 164 | async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) { |
| 161 | send(pin, v, Some(parity != 0)).await; | 165 | send(pin, v, Some(parity != 0)).await; |
| @@ -202,7 +206,7 @@ async fn main(_spawner: Spawner) { | |||
| 202 | let mut config = Config::default(); | 206 | let mut config = Config::default(); |
| 203 | config.baudrate = 1000; | 207 | config.baudrate = 1000; |
| 204 | let rx_buf = &mut [0u8; 16]; | 208 | let rx_buf = &mut [0u8; 16]; |
| 205 | let mut uart = BufferedUartRx::new(&mut uart, &mut irq, &mut rx, rx_buf, config); | 209 | let mut uart = BufferedUartRx::new(&mut uart, Irqs, &mut rx, rx_buf, config); |
| 206 | 210 | ||
| 207 | async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) { | 211 | async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) { |
| 208 | if good { | 212 | if good { |
