с сериал порта на stm32 🙁
rust
let mut gpiob: stm32f1xx_hal::gpio::gpiob::Parts = cx.device.GPIOB.split();
let tx_pin = gpiob.pb10.into_alternate_push_pull(&mut gpiob.crh);
let rx_pin = gpiob.pb11; //.into_pull_down_input(&mut gpiob.crh);
let mut afio = cx.device.AFIO.constrain();
let serial = Serial::new(
cx.device.USART3,
(tx_pin, rx_pin),
&mut afio.mapr,
Config::default()
.baudrate(9600.bps())
.wordlength_8bits()
.stopbits(stm32f1xx_hal::serial::StopBits::STOP1)
.parity_none(),
&clocks,
);
let (tx, rx) = serial.split();
// …
if rx.is_rx_not_empty() {
let received = rx.read();
match received {
Ok(read) => defmt::debug!("receive: {}", read),
Err(err) => {
defmt::debug!("read err: {:?}", defmt::Debug2Format(&err));
}
}
}
так если overrun - то ты не у спеваешь читать. выложи весь код на гист или типа того, пока непонятно
вообще лучше всего проект сразу на гитхаб
Обсуждают сегодня