bxcan: Fix the flaky CAN example
This commit is contained in:
parent
191a589820
commit
dacf75d911
@ -8,8 +8,10 @@
|
|||||||
mod example_common;
|
mod example_common;
|
||||||
|
|
||||||
use cortex_m_rt::entry;
|
use cortex_m_rt::entry;
|
||||||
|
use embassy_stm32::can::filter::Mask32;
|
||||||
use embassy_stm32::can::{Can, Frame, StandardId};
|
use embassy_stm32::can::{Can, Frame, StandardId};
|
||||||
use embassy_stm32::dbgmcu::Dbgmcu;
|
use embassy_stm32::dbgmcu::Dbgmcu;
|
||||||
|
use embassy_stm32::gpio::{Input, Pull};
|
||||||
use example_common::*;
|
use example_common::*;
|
||||||
|
|
||||||
#[entry]
|
#[entry]
|
||||||
@ -20,11 +22,22 @@ fn main() -> ! {
|
|||||||
Dbgmcu::enable_all();
|
Dbgmcu::enable_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
let p = embassy_stm32::init(Default::default());
|
let mut p = embassy_stm32::init(Default::default());
|
||||||
|
|
||||||
|
// The next two lines are a workaround for testing without transceiver.
|
||||||
|
// To synchronise to the bus the RX input needs to see a high level.
|
||||||
|
// Use `mem::forget()` to release the borrow on the pin but keep the
|
||||||
|
// pull-up resistor enabled.
|
||||||
|
let rx_pin = Input::new(&mut p.PA11, Pull::Up);
|
||||||
|
core::mem::forget(rx_pin);
|
||||||
|
|
||||||
let mut can = Can::new(p.CAN1, p.PA11, p.PA12);
|
let mut can = Can::new(p.CAN1, p.PA11, p.PA12);
|
||||||
|
|
||||||
can.modify_config().set_loopback(true);
|
can.modify_config()
|
||||||
|
.set_bit_timing(0x001c0003) // http://www.bittiming.can-wiki.info/
|
||||||
|
.set_loopback(true) // Receive own frames
|
||||||
|
.set_silent(true);
|
||||||
|
can.modify_filters().enable_bank(0, Mask32::accept_all());
|
||||||
unwrap!(nb::block!(can.enable()));
|
unwrap!(nb::block!(can.enable()));
|
||||||
|
|
||||||
let mut i: u8 = 0;
|
let mut i: u8 = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user