diff options
| author | Timo Kröger <[email protected]> | 2021-07-27 15:03:18 +0200 |
|---|---|---|
| committer | Timo Kröger <[email protected]> | 2021-07-27 15:03:18 +0200 |
| commit | dd1ec8ebec3e02af803c8d06b5c18aeda5b8cff6 (patch) | |
| tree | f747a487ebdccef872bcb6e03c81a582697dcfe9 | |
| parent | d83cd3fffdafd8bd5773daa9374eb56e474e32e3 (diff) | |
Use `embassy::main` macro for stm32f4 examples
| -rw-r--r-- | examples/stm32f4/src/bin/blinky.rs | 16 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/button_exti.rs | 30 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/spi.rs | 9 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/spi_dma.rs | 72 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usart.rs | 32 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usart_dma.rs | 33 |
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"] |
| 10 | mod example_common; | 10 | mod example_common; |
| 11 | use defmt::panic; | ||
| 12 | use embassy::executor::Spawner; | ||
| 13 | use embassy::time::{Duration, Timer}; | ||
| 11 | use embassy_stm32::dbgmcu::Dbgmcu; | 14 | use embassy_stm32::dbgmcu::Dbgmcu; |
| 12 | use embassy_stm32::gpio::{Level, Output, Speed}; | 15 | use embassy_stm32::gpio::{Level, Output, Speed}; |
| 16 | use embassy_stm32::Peripherals; | ||
| 13 | use embedded_hal::digital::v2::OutputPin; | 17 | use embedded_hal::digital::v2::OutputPin; |
| 14 | use example_common::*; | 18 | use example_common::*; |
| 15 | 19 | ||
| 16 | use cortex_m_rt::entry; | 20 | #[embassy::main] |
| 17 | 21 | async fn main(_spawner: Spawner, p: Peripherals) { | |
| 18 | #[entry] | ||
| 19 | fn 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"] |
| 10 | mod example_common; | 10 | mod example_common; |
| 11 | use embassy::executor::Executor; | 11 | use defmt::panic; |
| 12 | use embassy::util::Forever; | 12 | use embassy::executor::Spawner; |
| 13 | use embassy_stm32::dbgmcu::Dbgmcu; | 13 | use embassy_stm32::dbgmcu::Dbgmcu; |
| 14 | use embassy_stm32::exti::ExtiInput; | 14 | use embassy_stm32::exti::ExtiInput; |
| 15 | use embassy_stm32::gpio::{Input, Pull}; | 15 | use embassy_stm32::gpio::{Input, Pull}; |
| 16 | use embassy_stm32::Peripherals; | ||
| 16 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; | 17 | use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; |
| 17 | use example_common::*; | 18 | use example_common::*; |
| 18 | 19 | ||
| 19 | use cortex_m_rt::entry; | 20 | #[embassy::main] |
| 21 | async fn main(_spawner: Spawner, p: Peripherals) { | ||
| 22 | info!("Hello World!"); | ||
| 20 | 23 | ||
| 21 | #[embassy::task] | 24 | unsafe { |
| 22 | async 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 | |||
| 38 | static EXECUTOR: Forever<Executor> = Forever::new(); | ||
| 39 | |||
| 40 | #[entry] | ||
| 41 | fn 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"] |
| 10 | mod example_common; | 10 | mod example_common; |
| 11 | 11 | ||
| 12 | use embassy_stm32::gpio::{Level, Output, Speed}; | ||
| 13 | use embedded_hal::digital::v2::OutputPin; | ||
| 14 | use example_common::*; | ||
| 15 | |||
| 16 | use cortex_m_rt::entry; | 12 | use cortex_m_rt::entry; |
| 17 | use embassy_stm32::dbgmcu::Dbgmcu; | 13 | use embassy_stm32::dbgmcu::Dbgmcu; |
| 14 | use embassy_stm32::dma::NoDma; | ||
| 15 | use embassy_stm32::gpio::{Level, Output, Speed}; | ||
| 18 | use embassy_stm32::spi::{Config, Spi}; | 16 | use embassy_stm32::spi::{Config, Spi}; |
| 19 | use embassy_stm32::time::Hertz; | 17 | use embassy_stm32::time::Hertz; |
| 20 | use embedded_hal::blocking::spi::Transfer; | 18 | use embedded_hal::blocking::spi::Transfer; |
| 21 | use embassy_stm32::dma::NoDma; | 19 | use embedded_hal::digital::v2::OutputPin; |
| 20 | use example_common::*; | ||
| 22 | 21 | ||
| 23 | #[entry] | 22 | #[entry] |
| 24 | fn main() -> ! { | 23 | fn 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"] |
| 10 | mod example_common; | 10 | mod example_common; |
| 11 | use core::fmt::Write; | 11 | use core::fmt::Write; |
| 12 | use cortex_m_rt::entry; | 12 | use core::str::from_utf8; |
| 13 | use embassy::executor::Executor; | 13 | use defmt::panic; |
| 14 | use embassy::time::Clock; | 14 | use embassy::executor::Spawner; |
| 15 | use embassy::util::Forever; | 15 | use embassy_stm32::dbgmcu::Dbgmcu; |
| 16 | use example_common::*; | 16 | use embassy_stm32::spi::{Config, Spi}; |
| 17 | use embassy_stm32::time::Hertz; | ||
| 18 | use embassy_stm32::Peripherals; | ||
| 17 | use embassy_traits::spi::FullDuplex; | 19 | use embassy_traits::spi::FullDuplex; |
| 20 | use example_common::*; | ||
| 18 | use heapless::String; | 21 | use heapless::String; |
| 19 | use embassy_stm32::spi::{Spi, Config}; | ||
| 20 | use embassy_stm32::pac; | ||
| 21 | use embassy_stm32::time::Hertz; | ||
| 22 | use core::str::from_utf8; | ||
| 23 | 22 | ||
| 24 | #[embassy::task] | 23 | #[embassy::main] |
| 25 | async fn main_task() { | 24 | async 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 | |||
| 48 | struct ZeroClock; | ||
| 49 | |||
| 50 | impl Clock for ZeroClock { | ||
| 51 | fn now(&self) -> u64 { | ||
| 52 | 0 | ||
| 53 | } | ||
| 54 | } | ||
| 55 | |||
| 56 | static EXECUTOR: Forever<Executor> = Forever::new(); | ||
| 57 | |||
| 58 | #[entry] | ||
| 59 | fn 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"] |
| 10 | mod example_common; | 10 | mod example_common; |
| 11 | use cortex_m::prelude::_embedded_hal_blocking_serial_Write; | 11 | use cortex_m_rt::entry; |
| 12 | use embassy::executor::Executor; | ||
| 13 | use embassy::util::Forever; | ||
| 14 | use embassy_stm32::dbgmcu::Dbgmcu; | 12 | use embassy_stm32::dbgmcu::Dbgmcu; |
| 15 | use embassy_stm32::dma::NoDma; | 13 | use embassy_stm32::dma::NoDma; |
| 16 | use embassy_stm32::usart::{Config, Uart}; | 14 | use embassy_stm32::usart::{Config, Uart}; |
| 15 | use embedded_hal::blocking::serial::Write; | ||
| 17 | use example_common::*; | 16 | use example_common::*; |
| 18 | 17 | ||
| 19 | use cortex_m_rt::entry; | 18 | #[entry] |
| 19 | fn main() -> ! { | ||
| 20 | info!("Hello World!"); | ||
| 21 | |||
| 22 | unsafe { | ||
| 23 | Dbgmcu::enable_all(); | ||
| 24 | } | ||
| 20 | 25 | ||
| 21 | #[embassy::task] | ||
| 22 | async 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 | |||
| 38 | static EXECUTOR: Forever<Executor> = Forever::new(); | ||
| 39 | |||
| 40 | #[entry] | ||
| 41 | fn 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"] |
| 10 | mod example_common; | 10 | mod example_common; |
| 11 | use core::fmt::Write; | 11 | use core::fmt::Write; |
| 12 | use cortex_m_rt::entry; | 12 | use defmt::panic; |
| 13 | use embassy::executor::Executor; | 13 | use embassy::executor::Spawner; |
| 14 | use embassy::util::Forever; | ||
| 15 | use embassy_stm32::dbgmcu::Dbgmcu; | 14 | use embassy_stm32::dbgmcu::Dbgmcu; |
| 16 | use embassy_stm32::dma::NoDma; | 15 | use embassy_stm32::dma::NoDma; |
| 17 | use embassy_stm32::usart::{Config, Uart}; | 16 | use embassy_stm32::usart::{Config, Uart}; |
| 17 | use embassy_stm32::Peripherals; | ||
| 18 | use embassy_traits::uart::Write as _; | 18 | use embassy_traits::uart::Write as _; |
| 19 | use example_common::*; | 19 | use example_common::*; |
| 20 | use heapless::String; | 20 | use heapless::String; |
| 21 | 21 | ||
| 22 | #[embassy::task] | 22 | #[embassy::main] |
| 23 | async fn main_task() { | 23 | async 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 | |||
| 38 | static EXECUTOR: Forever<Executor> = Forever::new(); | ||
| 39 | |||
| 40 | #[entry] | ||
| 41 | fn 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 | } | ||
