aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-07-28 10:34:46 +0200
committerGitHub <[email protected]>2021-07-28 10:34:46 +0200
commit126407f8c8d3c3373993e57f4cc31afb58db498a (patch)
treef747a487ebdccef872bcb6e03c81a582697dcfe9
parentd83cd3fffdafd8bd5773daa9374eb56e474e32e3 (diff)
parentdd1ec8ebec3e02af803c8d06b5c18aeda5b8cff6 (diff)
Merge pull request #319 from timokroeger/stm32f4-embassymain
Use `embassy::main` macro for stm32f4 examples
-rw-r--r--examples/stm32f4/src/bin/blinky.rs16
-rw-r--r--examples/stm32f4/src/bin/button_exti.rs30
-rw-r--r--examples/stm32f4/src/bin/spi.rs9
-rw-r--r--examples/stm32f4/src/bin/spi_dma.rs72
-rw-r--r--examples/stm32f4/src/bin/usart.rs32
-rw-r--r--examples/stm32f4/src/bin/usart_dma.rs33
6 files changed, 59 insertions, 133 deletions
diff --git a/examples/stm32f4/src/bin/blinky.rs b/examples/stm32f4/src/bin/blinky.rs
index 9e50c95c8..9f86515ea 100644
--- a/examples/stm32f4/src/bin/blinky.rs
+++ b/examples/stm32f4/src/bin/blinky.rs
@@ -8,32 +8,32 @@
8 8
9#[path = "../example_common.rs"] 9#[path = "../example_common.rs"]
10mod example_common; 10mod example_common;
11use defmt::panic;
12use embassy::executor::Spawner;
13use embassy::time::{Duration, Timer};
11use embassy_stm32::dbgmcu::Dbgmcu; 14use embassy_stm32::dbgmcu::Dbgmcu;
12use embassy_stm32::gpio::{Level, Output, Speed}; 15use embassy_stm32::gpio::{Level, Output, Speed};
16use embassy_stm32::Peripherals;
13use embedded_hal::digital::v2::OutputPin; 17use embedded_hal::digital::v2::OutputPin;
14use example_common::*; 18use example_common::*;
15 19
16use cortex_m_rt::entry; 20#[embassy::main]
17 21async fn main(_spawner: Spawner, p: Peripherals) {
18#[entry]
19fn main() -> ! {
20 info!("Hello World!"); 22 info!("Hello World!");
21 23
22 unsafe { 24 unsafe {
23 Dbgmcu::enable_all(); 25 Dbgmcu::enable_all();
24 } 26 }
25 27
26 let p = embassy_stm32::init(Default::default());
27
28 let mut led = Output::new(p.PB7, Level::High, Speed::Low); 28 let mut led = Output::new(p.PB7, Level::High, Speed::Low);
29 29
30 loop { 30 loop {
31 info!("high"); 31 info!("high");
32 led.set_high().unwrap(); 32 led.set_high().unwrap();
33 cortex_m::asm::delay(10_000_000); 33 Timer::after(Duration::from_millis(300)).await;
34 34
35 info!("low"); 35 info!("low");
36 led.set_low().unwrap(); 36 led.set_low().unwrap();
37 cortex_m::asm::delay(10_000_000); 37 Timer::after(Duration::from_millis(300)).await;
38 } 38 }
39} 39}
diff --git a/examples/stm32f4/src/bin/button_exti.rs b/examples/stm32f4/src/bin/button_exti.rs
index bc48c2b12..d685b6608 100644
--- a/examples/stm32f4/src/bin/button_exti.rs
+++ b/examples/stm32f4/src/bin/button_exti.rs
@@ -8,19 +8,22 @@
8 8
9#[path = "../example_common.rs"] 9#[path = "../example_common.rs"]
10mod example_common; 10mod example_common;
11use embassy::executor::Executor; 11use defmt::panic;
12use embassy::util::Forever; 12use embassy::executor::Spawner;
13use embassy_stm32::dbgmcu::Dbgmcu; 13use embassy_stm32::dbgmcu::Dbgmcu;
14use embassy_stm32::exti::ExtiInput; 14use embassy_stm32::exti::ExtiInput;
15use embassy_stm32::gpio::{Input, Pull}; 15use embassy_stm32::gpio::{Input, Pull};
16use embassy_stm32::Peripherals;
16use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; 17use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
17use example_common::*; 18use example_common::*;
18 19
19use cortex_m_rt::entry; 20#[embassy::main]
21async fn main(_spawner: Spawner, p: Peripherals) {
22 info!("Hello World!");
20 23
21#[embassy::task] 24 unsafe {
22async fn main_task() { 25 Dbgmcu::enable_all();
23 let p = embassy_stm32::init(Default::default()); 26 }
24 27
25 let button = Input::new(p.PC13, Pull::Down); 28 let button = Input::new(p.PC13, Pull::Down);
26 let mut button = ExtiInput::new(button, p.EXTI13); 29 let mut button = ExtiInput::new(button, p.EXTI13);
@@ -34,18 +37,3 @@ async fn main_task() {
34 info!("Released!"); 37 info!("Released!");
35 } 38 }
36} 39}
37
38static EXECUTOR: Forever<Executor> = Forever::new();
39
40#[entry]
41fn main() -> ! {
42 info!("Hello World!");
43
44 unsafe { Dbgmcu::enable_all() }
45
46 let executor = EXECUTOR.put(Executor::new());
47
48 executor.run(|spawner| {
49 unwrap!(spawner.spawn(main_task()));
50 })
51}
diff --git a/examples/stm32f4/src/bin/spi.rs b/examples/stm32f4/src/bin/spi.rs
index 604283877..6e2b703f2 100644
--- a/examples/stm32f4/src/bin/spi.rs
+++ b/examples/stm32f4/src/bin/spi.rs
@@ -9,16 +9,15 @@
9#[path = "../example_common.rs"] 9#[path = "../example_common.rs"]
10mod example_common; 10mod example_common;
11 11
12use embassy_stm32::gpio::{Level, Output, Speed};
13use embedded_hal::digital::v2::OutputPin;
14use example_common::*;
15
16use cortex_m_rt::entry; 12use cortex_m_rt::entry;
17use embassy_stm32::dbgmcu::Dbgmcu; 13use embassy_stm32::dbgmcu::Dbgmcu;
14use embassy_stm32::dma::NoDma;
15use embassy_stm32::gpio::{Level, Output, Speed};
18use embassy_stm32::spi::{Config, Spi}; 16use embassy_stm32::spi::{Config, Spi};
19use embassy_stm32::time::Hertz; 17use embassy_stm32::time::Hertz;
20use embedded_hal::blocking::spi::Transfer; 18use embedded_hal::blocking::spi::Transfer;
21use embassy_stm32::dma::NoDma; 19use embedded_hal::digital::v2::OutputPin;
20use example_common::*;
22 21
23#[entry] 22#[entry]
24fn main() -> ! { 23fn main() -> ! {
diff --git a/examples/stm32f4/src/bin/spi_dma.rs b/examples/stm32f4/src/bin/spi_dma.rs
index 10a419fda..ccabbed9e 100644
--- a/examples/stm32f4/src/bin/spi_dma.rs
+++ b/examples/stm32f4/src/bin/spi_dma.rs
@@ -9,21 +9,24 @@
9#[path = "../example_common.rs"] 9#[path = "../example_common.rs"]
10mod example_common; 10mod example_common;
11use core::fmt::Write; 11use core::fmt::Write;
12use cortex_m_rt::entry; 12use core::str::from_utf8;
13use embassy::executor::Executor; 13use defmt::panic;
14use embassy::time::Clock; 14use embassy::executor::Spawner;
15use embassy::util::Forever; 15use embassy_stm32::dbgmcu::Dbgmcu;
16use example_common::*; 16use embassy_stm32::spi::{Config, Spi};
17use embassy_stm32::time::Hertz;
18use embassy_stm32::Peripherals;
17use embassy_traits::spi::FullDuplex; 19use embassy_traits::spi::FullDuplex;
20use example_common::*;
18use heapless::String; 21use heapless::String;
19use embassy_stm32::spi::{Spi, Config};
20use embassy_stm32::pac;
21use embassy_stm32::time::Hertz;
22use core::str::from_utf8;
23 22
24#[embassy::task] 23#[embassy::main]
25async fn main_task() { 24async fn main(_spawner: Spawner, p: Peripherals) {
26 let p = embassy_stm32::init(Default::default()); 25 info!("Hello World!");
26
27 unsafe {
28 Dbgmcu::enable_all();
29 }
27 30
28 let mut spi = Spi::new( 31 let mut spi = Spi::new(
29 p.SPI1, 32 p.SPI1,
@@ -38,48 +41,11 @@ async fn main_task() {
38 41
39 for n in 0u32.. { 42 for n in 0u32.. {
40 let mut write: String<128> = String::new(); 43 let mut write: String<128> = String::new();
41 let mut read = [0;128]; 44 let mut read = [0; 128];
42 core::write!(&mut write, "Hello DMA World {}!\r\n", n).unwrap(); 45 core::write!(&mut write, "Hello DMA World {}!\r\n", n).unwrap();
43 spi.read_write(&mut read[0..write.len()], write.as_bytes()).await.ok(); 46 spi.read_write(&mut read[0..write.len()], write.as_bytes())
47 .await
48 .ok();
44 info!("read via spi+dma: {}", from_utf8(&read).unwrap()); 49 info!("read via spi+dma: {}", from_utf8(&read).unwrap());
45 } 50 }
46} 51}
47
48struct ZeroClock;
49
50impl Clock for ZeroClock {
51 fn now(&self) -> u64 {
52 0
53 }
54}
55
56static EXECUTOR: Forever<Executor> = Forever::new();
57
58#[entry]
59fn main() -> ! {
60 info!("Hello World!");
61 unsafe {
62 pac::DBGMCU.cr().modify(|w| {
63 w.set_dbg_sleep(true);
64 w.set_dbg_standby(true);
65 w.set_dbg_stop(true);
66 });
67
68 pac::RCC.ahb1enr().modify(|w| {
69 w.set_gpioaen(true);
70 w.set_gpioben(true);
71 w.set_gpiocen(true);
72 w.set_gpioden(true);
73 w.set_gpioeen(true);
74 w.set_gpiofen(true);
75 });
76 }
77
78 unsafe { embassy::time::set_clock(&ZeroClock) };
79
80 let executor = EXECUTOR.put(Executor::new());
81
82 executor.run(|spawner| {
83 unwrap!(spawner.spawn(main_task()));
84 })
85}
diff --git a/examples/stm32f4/src/bin/usart.rs b/examples/stm32f4/src/bin/usart.rs
index 7cac33e9c..8f0e04e57 100644
--- a/examples/stm32f4/src/bin/usart.rs
+++ b/examples/stm32f4/src/bin/usart.rs
@@ -8,18 +8,21 @@
8 8
9#[path = "../example_common.rs"] 9#[path = "../example_common.rs"]
10mod example_common; 10mod example_common;
11use cortex_m::prelude::_embedded_hal_blocking_serial_Write; 11use cortex_m_rt::entry;
12use embassy::executor::Executor;
13use embassy::util::Forever;
14use embassy_stm32::dbgmcu::Dbgmcu; 12use embassy_stm32::dbgmcu::Dbgmcu;
15use embassy_stm32::dma::NoDma; 13use embassy_stm32::dma::NoDma;
16use embassy_stm32::usart::{Config, Uart}; 14use embassy_stm32::usart::{Config, Uart};
15use embedded_hal::blocking::serial::Write;
17use example_common::*; 16use example_common::*;
18 17
19use cortex_m_rt::entry; 18#[entry]
19fn main() -> ! {
20 info!("Hello World!");
21
22 unsafe {
23 Dbgmcu::enable_all();
24 }
20 25
21#[embassy::task]
22async fn main_task() {
23 let p = embassy_stm32::init(Default::default()); 26 let p = embassy_stm32::init(Default::default());
24 27
25 let config = Config::default(); 28 let config = Config::default();
@@ -34,20 +37,3 @@ async fn main_task() {
34 usart.bwrite_all(&buf).unwrap(); 37 usart.bwrite_all(&buf).unwrap();
35 } 38 }
36} 39}
37
38static EXECUTOR: Forever<Executor> = Forever::new();
39
40#[entry]
41fn main() -> ! {
42 info!("Hello World!");
43
44 unsafe {
45 Dbgmcu::enable_all();
46 }
47
48 let executor = EXECUTOR.put(Executor::new());
49
50 executor.run(|spawner| {
51 unwrap!(spawner.spawn(main_task()));
52 })
53}
diff --git a/examples/stm32f4/src/bin/usart_dma.rs b/examples/stm32f4/src/bin/usart_dma.rs
index 552f8367d..3b86f78cd 100644
--- a/examples/stm32f4/src/bin/usart_dma.rs
+++ b/examples/stm32f4/src/bin/usart_dma.rs
@@ -9,19 +9,23 @@
9#[path = "../example_common.rs"] 9#[path = "../example_common.rs"]
10mod example_common; 10mod example_common;
11use core::fmt::Write; 11use core::fmt::Write;
12use cortex_m_rt::entry; 12use defmt::panic;
13use embassy::executor::Executor; 13use embassy::executor::Spawner;
14use embassy::util::Forever;
15use embassy_stm32::dbgmcu::Dbgmcu; 14use embassy_stm32::dbgmcu::Dbgmcu;
16use embassy_stm32::dma::NoDma; 15use embassy_stm32::dma::NoDma;
17use embassy_stm32::usart::{Config, Uart}; 16use embassy_stm32::usart::{Config, Uart};
17use embassy_stm32::Peripherals;
18use embassy_traits::uart::Write as _; 18use embassy_traits::uart::Write as _;
19use example_common::*; 19use example_common::*;
20use heapless::String; 20use heapless::String;
21 21
22#[embassy::task] 22#[embassy::main]
23async fn main_task() { 23async fn main(_spawner: Spawner, p: Peripherals) {
24 let p = embassy_stm32::init(Default::default()); 24 info!("Hello World!");
25
26 unsafe {
27 Dbgmcu::enable_all();
28 }
25 29
26 let config = Config::default(); 30 let config = Config::default();
27 let mut usart = Uart::new(p.USART3, p.PD9, p.PD8, p.DMA1_CH3, NoDma, config); 31 let mut usart = Uart::new(p.USART3, p.PD9, p.PD8, p.DMA1_CH3, NoDma, config);
@@ -34,20 +38,3 @@ async fn main_task() {
34 info!("wrote DMA"); 38 info!("wrote DMA");
35 } 39 }
36} 40}
37
38static EXECUTOR: Forever<Executor> = Forever::new();
39
40#[entry]
41fn main() -> ! {
42 info!("Hello World!");
43
44 unsafe {
45 Dbgmcu::enable_all();
46 }
47
48 let executor = EXECUTOR.put(Executor::new());
49
50 executor.run(|spawner| {
51 unwrap!(spawner.spawn(main_task()));
52 })
53}