Skip to content

Commit 1b768d7

Browse files
committed
Cleanup uart examples
1 parent 4982a32 commit 1b768d7

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

examples/uart-fifo.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@ extern crate cortex_m_rt as rt;
77

88
use core::fmt::Write;
99

10+
use embedded_io::{Read, ReadReady};
1011
use hal::prelude::*;
1112
use hal::pwr::PwrExt;
1213
use hal::serial::*;
1314
use hal::{rcc, stm32};
1415
use stm32g4xx_hal as hal;
15-
// TODO: switch to embedded-hal-nb
16-
use hal::hal_02::serial::Read;
1716

1817
use cortex_m_rt::entry;
1918

@@ -52,23 +51,24 @@ fn main() -> ! {
5251

5352
let (mut tx1, mut rx1) = usart.split();
5453

54+
let mut buffer = [0; 4];
5555
let mut cnt = 0;
5656
loop {
5757
if rx1.fifo_threshold_reached() {
5858
loop {
59-
match rx1.read() {
60-
Err(nb::Error::WouldBlock) => {
61-
// no more data available in fifo
62-
break;
63-
}
64-
Err(nb::Error::Other(_err)) => {
59+
match rx1.read_ready() {
60+
Ok(true) => (),
61+
Ok(false) => break, // no more data available in fifo
62+
Err(e) => {
6563
// Handle other error Overrun, Framing, Noise or Parity
66-
}
67-
Ok(byte) => {
68-
writeln!(tx1, "{}: {}\r", cnt, byte).unwrap();
69-
cnt += 1;
64+
utils::logger::error!("Error: {:?}", e);
7065
}
7166
}
67+
68+
let count = rx1.read(&mut buffer).unwrap();
69+
let bytes = &buffer[count];
70+
writeln!(tx1, "{}: {}\r", cnt, bytes).unwrap();
71+
cnt += count;
7272
}
7373
}
7474
}

examples/uart.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use hal::{rcc, stm32};
1111
use stm32g4xx_hal as hal;
1212

1313
use cortex_m_rt::entry;
14-
use nb::block;
1514
use utils::logger::info;
1615

1716
#[macro_use]
@@ -57,10 +56,11 @@ fn main() -> ! {
5756
usart.read_exact(&mut read_buf).unwrap();
5857
usart.write_all(&read_buf).unwrap();
5958

59+
let mut single_byte_buffer = [0; 1];
6060
let mut cnt = 0;
6161
loop {
62-
match block!(embedded_hal_old::serial::Read::read(&mut usart)) {
63-
Ok(byte) => writeln!(usart, "{}: {}\r", cnt, byte).unwrap(),
62+
match usart.read_exact(&mut single_byte_buffer) {
63+
Ok(()) => writeln!(usart, "{}: {}\r", cnt, single_byte_buffer[0]).unwrap(),
6464
Err(e) => writeln!(usart, "E: {:?}\r", e).unwrap(),
6565
};
6666
cnt += 1;

src/serial/usart.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use embedded_io::{ReadReady, WriteReady};
1818
use crate::serial::config::*;
1919
/// Serial error
2020
#[derive(Debug)]
21+
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
2122
pub enum Error {
2223
/// Framing error
2324
Framing,

0 commit comments

Comments
 (0)