aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32f4-examples/src
diff options
context:
space:
mode:
authorxoviat <[email protected]>2021-01-04 12:52:00 -0600
committerxoviat <[email protected]>2021-01-04 12:52:00 -0600
commitf3676e1eabc4f3079003d8a006d45db7d3afc742 (patch)
treea148703627ee398e49fa37b8bc160e5b8fe9a794 /embassy-stm32f4-examples/src
parentbe541b94aaac92049a9283a44e715322a7653fcf (diff)
rename examples
Diffstat (limited to 'embassy-stm32f4-examples/src')
-rw-r--r--embassy-stm32f4-examples/src/serial.rs64
1 files changed, 64 insertions, 0 deletions
diff --git a/embassy-stm32f4-examples/src/serial.rs b/embassy-stm32f4-examples/src/serial.rs
new file mode 100644
index 000000000..6c757dd2f
--- /dev/null
+++ b/embassy-stm32f4-examples/src/serial.rs
@@ -0,0 +1,64 @@
1#![no_std]
2#![no_main]
3#![feature(trait_alias)]
4#![feature(type_alias_impl_trait)]
5
6// extern crate panic_halt;
7
8use cortex_m::singleton;
9use cortex_m_rt::entry;
10use embassy::executor::{task, Executor};
11use embassy::util::Forever;
12use embassy_stm32f4::interrupt;
13use embassy_stm32f4::serial;
14use stm32f4xx_hal::stm32;
15use stm32f4xx_hal::{prelude::*, serial::config};
16
17#[task]
18async fn run(dp: stm32::Peripherals, cp: cortex_m::Peripherals) {
19 // https://gist.github.com/thalesfragoso/a07340c5df6eee3b04c42fdc69ecdcb1
20 let gpioa = dp.GPIOA.split();
21 let rcc = dp.RCC.constrain();
22
23 let clocks = rcc
24 .cfgr
25 .use_hse(16.mhz())
26 .sysclk(48.mhz())
27 .pclk1(24.mhz())
28 .freeze();
29
30 let mut serial = serial::Serial::new(
31 gpioa.pa9.into_alternate_af7(),
32 gpioa.pa10.into_alternate_af7(),
33 interrupt::take!(DMA2_STREAM2),
34 interrupt::take!(DMA2_STREAM7),
35 interrupt::take!(USART1),
36 dp.DMA2,
37 dp.USART1,
38 config::Parity::ParityNone,
39 9600.bps(),
40 clocks,
41 );
42
43 let buf = singleton!(: [u8; 30] = [0; 30]).unwrap();
44
45 buf[5] = 0x01;
46
47 serial.send(buf).await;
48}
49
50static EXECUTOR: Forever<Executor> = Forever::new();
51
52#[entry]
53fn main() -> ! {
54 let dp = stm32::Peripherals::take().unwrap();
55 let cp = cortex_m::peripheral::Peripherals::take().unwrap();
56
57 let executor = EXECUTOR.put(Executor::new(cortex_m::asm::sev));
58 executor.spawn(run(dp, cp));
59
60 loop {
61 executor.run();
62 cortex_m::asm::wfe();
63 }
64}