aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32f4-examples/src/serial.rs35
-rw-r--r--embassy-stm32f4/src/serial.rs3
2 files changed, 20 insertions, 18 deletions
diff --git a/embassy-stm32f4-examples/src/serial.rs b/embassy-stm32f4-examples/src/serial.rs
index baed2e525..11a5b8904 100644
--- a/embassy-stm32f4-examples/src/serial.rs
+++ b/embassy-stm32f4-examples/src/serial.rs
@@ -8,6 +8,7 @@
8use cortex_m::singleton; 8use cortex_m::singleton;
9use cortex_m_rt::entry; 9use cortex_m_rt::entry;
10use embassy::executor::{task, Executor}; 10use embassy::executor::{task, Executor};
11use embassy::uart::Uart;
11use embassy::util::Forever; 12use embassy::util::Forever;
12use embassy_stm32f4::interrupt; 13use embassy_stm32f4::interrupt;
13use embassy_stm32f4::serial; 14use embassy_stm32f4::serial;
@@ -27,24 +28,24 @@ async fn run(dp: stm32::Peripherals, cp: cortex_m::Peripherals) {
27 .pclk1(24.mhz()) 28 .pclk1(24.mhz())
28 .freeze(); 29 .freeze();
29 30
30 let mut serial = serial::Serial::new( 31 unsafe {
31 gpioa.pa9.into_alternate_af7(), 32 let mut serial = serial::Serial::new(
32 gpioa.pa10.into_alternate_af7(), 33 gpioa.pa9.into_alternate_af7(),
33 interrupt::take!(DMA2_STREAM7), 34 gpioa.pa10.into_alternate_af7(),
34 interrupt::take!(DMA2_STREAM2), 35 interrupt::take!(DMA2_STREAM7),
35 interrupt::take!(USART1), 36 interrupt::take!(DMA2_STREAM2),
36 dp.DMA2, 37 interrupt::take!(USART1),
37 dp.USART1, 38 dp.DMA2,
38 config::Parity::ParityNone, 39 dp.USART1,
39 9600.bps(), 40 config::Parity::ParityNone,
40 clocks, 41 9600.bps(),
41 ); 42 clocks,
43 );
44 let buf = singleton!(: [u8; 30] = [0; 30]).unwrap();
42 45
43 let buf = singleton!(: [u8; 30] = [0; 30]).unwrap(); 46 buf[5] = 0x01;
44 47 serial.send(buf).await;
45 buf[5] = 0x01; 48 }
46
47 serial.send(buf).await;
48} 49}
49 50
50static EXECUTOR: Forever<Executor> = Forever::new(); 51static EXECUTOR: Forever<Executor> = Forever::new();
diff --git a/embassy-stm32f4/src/serial.rs b/embassy-stm32f4/src/serial.rs
index a34db9de6..b13438272 100644
--- a/embassy-stm32f4/src/serial.rs
+++ b/embassy-stm32f4/src/serial.rs
@@ -57,7 +57,8 @@ static STATE: State = State {
57static mut INSTANCE: *const Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> = ptr::null_mut(); 57static mut INSTANCE: *const Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> = ptr::null_mut();
58 58
59impl Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> { 59impl Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> {
60 pub fn new( 60 // Leaking futures is forbidden!
61 pub unsafe fn new(
61 txd: PA9<Alternate<AF7>>, 62 txd: PA9<Alternate<AF7>>,
62 rxd: PA10<Alternate<AF7>>, 63 rxd: PA10<Alternate<AF7>>,
63 tx_int: interrupt::DMA2_STREAM7Interrupt, 64 tx_int: interrupt::DMA2_STREAM7Interrupt,