Приём одного байта
Пока что мы умеем отправлять данные с микроконтроллера на компьютер. Пора попробовать обратное: принимать данные с компьютера (examples/receive-byte.rs).
#![no_main]
#![no_std]
use cortex_m_rt::entry;
use panic_rtt_target as _;
use rtt_target::{rprintln, rtt_init_print};
use microbit::hal::uarte::{self, Baudrate, Parity};
use serial_setup::UartePort;
#[entry]
fn main() -> ! {
rtt_init_print!();
let board = microbit::Board::take().unwrap();
let mut serial = {
let serial = uarte::Uarte::new(
board.UARTE0,
board.uart.into(),
Parity::EXCLUDED,
Baudrate::BAUD115200,
);
UartePort::new(serial)
};
loop {
let byte = serial.read().unwrap();
rprintln!("{}", byte);
}
}
По сравнению с программой отправки байта изменилась только часть — цикл в конце main(). Здесь мы используем функцию serial.read(), чтобы дождаться доступности байта и прочитать его. Затем выводим этот байт в нашу отладочную консоль RTT, чтобы проверить, действительно ли данные поступают.
Обратите внимание: если вы прошьёте эту программу и начнёте печатать символы в minicom, чтобы отправить их микроконтроллеру, в консоли RTT вы увидите только числа: мы не преобразуем полученный u8 в настоящий char. Поскольку преобразование из u8 в char довольно простое, оставлю эту задачу вам, если действительно хотите видеть символы в консоли RTT.