aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32h7
diff options
context:
space:
mode:
authorMathias <[email protected]>2022-08-18 21:08:57 +0200
committerMathias <[email protected]>2022-08-18 21:08:57 +0200
commita7d6bc7ba5faef3d711b944baf6c8e3685fdb37e (patch)
treed35085173fb8e4a0ff3b6357e3aaef18c6124e6e /examples/stm32h7
parent9c9b7b1a66dc90a9183886867811d2db57df714c (diff)
parentaefa5275a2ab2cac6caef599e7adb76ce1beeddd (diff)
Merge branch 'master' of https://github.com/embassy-rs/embassy into embassy-rp/dma
Diffstat (limited to 'examples/stm32h7')
-rw-r--r--examples/stm32h7/Cargo.toml7
-rw-r--r--examples/stm32h7/src/bin/adc.rs14
-rw-r--r--examples/stm32h7/src/bin/blinky.rs8
-rw-r--r--examples/stm32h7/src/bin/button_exti.rs6
-rw-r--r--examples/stm32h7/src/bin/camera.rs30
-rw-r--r--examples/stm32h7/src/bin/dac.rs14
-rw-r--r--examples/stm32h7/src/bin/eth.rs15
-rw-r--r--examples/stm32h7/src/bin/eth_client.rs15
-rw-r--r--examples/stm32h7/src/bin/flash.rs8
-rw-r--r--examples/stm32h7/src/bin/fmc.rs14
-rw-r--r--examples/stm32h7/src/bin/low_level_timer_api.rs14
-rw-r--r--examples/stm32h7/src/bin/mco.rs8
-rw-r--r--examples/stm32h7/src/bin/pwm.rs15
-rw-r--r--examples/stm32h7/src/bin/rng.rs6
-rw-r--r--examples/stm32h7/src/bin/sdmmc.rs13
-rw-r--r--examples/stm32h7/src/bin/signal.rs8
-rw-r--r--examples/stm32h7/src/bin/spi.rs16
-rw-r--r--examples/stm32h7/src/bin/spi_dma.rs16
-rw-r--r--examples/stm32h7/src/bin/usart.rs2
-rw-r--r--examples/stm32h7/src/bin/usart_dma.rs2
-rw-r--r--examples/stm32h7/src/bin/usart_split.rs6
21 files changed, 102 insertions, 135 deletions
diff --git a/examples/stm32h7/Cargo.toml b/examples/stm32h7/Cargo.toml
index 896046759..a416796ea 100644
--- a/examples/stm32h7/Cargo.toml
+++ b/examples/stm32h7/Cargo.toml
@@ -5,7 +5,8 @@ version = "0.1.0"
5 5
6[dependencies] 6[dependencies]
7embassy-util = { version = "0.1.0", path = "../../embassy-util", features = ["defmt"] } 7embassy-util = { version = "0.1.0", path = "../../embassy-util", features = ["defmt"] }
8embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["defmt", "defmt-timestamp-uptime", "unstable-traits", "time-tick-32768hz"] } 8embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["defmt", "integrated-timers"] }
9embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "unstable-traits", "tick-32768hz"] }
9embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32h743bi", "net", "time-driver-any", "exti", "unstable-pac", "unstable-traits"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32h743bi", "net", "time-driver-any", "exti", "unstable-pac", "unstable-traits"] }
10embassy-net = { path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "pool-16", "unstable-traits"] } 11embassy-net = { path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "pool-16", "unstable-traits"] }
11embedded-io = { version = "0.3.0", features = ["async"] } 12embedded-io = { version = "0.3.0", features = ["async"] }
@@ -13,7 +14,7 @@ embedded-io = { version = "0.3.0", features = ["async"] }
13defmt = "0.3" 14defmt = "0.3"
14defmt-rtt = "0.3" 15defmt-rtt = "0.3"
15 16
16cortex-m = "0.7.3" 17cortex-m = { version = "0.7.6", features = ["critical-section-single-core"] }
17cortex-m-rt = "0.7.0" 18cortex-m-rt = "0.7.0"
18embedded-hal = "0.2.6" 19embedded-hal = "0.2.6"
19embedded-hal-1 = { package = "embedded-hal", version = "1.0.0-alpha.8" } 20embedded-hal-1 = { package = "embedded-hal", version = "1.0.0-alpha.8" }
@@ -23,7 +24,7 @@ panic-probe = { version = "0.3", features = ["print-defmt"] }
23futures = { version = "0.3.17", default-features = false, features = ["async-await"] } 24futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
24heapless = { version = "0.7.5", default-features = false } 25heapless = { version = "0.7.5", default-features = false }
25rand_core = "0.6.3" 26rand_core = "0.6.3"
26critical-section = "0.2.5" 27critical-section = "1.1"
27micromath = "2.0.0" 28micromath = "2.0.0"
28stm32-fmc = "0.2.4" 29stm32-fmc = "0.2.4"
29embedded-storage = "0.3.0" 30embedded-storage = "0.3.0"
diff --git a/examples/stm32h7/src/bin/adc.rs b/examples/stm32h7/src/bin/adc.rs
index f50976a30..0e1e28c72 100644
--- a/examples/stm32h7/src/bin/adc.rs
+++ b/examples/stm32h7/src/bin/adc.rs
@@ -3,25 +3,23 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Delay, Duration, Timer};
8use embassy_stm32::adc::{Adc, SampleTime}; 7use embassy_stm32::adc::{Adc, SampleTime};
9use embassy_stm32::rcc::AdcClockSource; 8use embassy_stm32::rcc::AdcClockSource;
10use embassy_stm32::time::mhz; 9use embassy_stm32::time::mhz;
11use embassy_stm32::{Config, Peripherals}; 10use embassy_stm32::Config;
11use embassy_time::{Delay, Duration, Timer};
12use {defmt_rtt as _, panic_probe as _}; 12use {defmt_rtt as _, panic_probe as _};
13 13
14pub fn config() -> Config { 14#[embassy_executor::main]
15async fn main(_spawner: Spawner) {
15 let mut config = Config::default(); 16 let mut config = Config::default();
16 config.rcc.sys_ck = Some(mhz(400)); 17 config.rcc.sys_ck = Some(mhz(400));
17 config.rcc.hclk = Some(mhz(200)); 18 config.rcc.hclk = Some(mhz(200));
18 config.rcc.per_ck = Some(mhz(64)); 19 config.rcc.per_ck = Some(mhz(64));
19 config.rcc.adc_clock_source = AdcClockSource::PerCk; 20 config.rcc.adc_clock_source = AdcClockSource::PerCk;
20 config 21 let mut p = embassy_stm32::init(config);
21}
22 22
23#[embassy_executor::main(config = "config()")]
24async fn main(_spawner: Spawner, mut p: Peripherals) {
25 info!("Hello World!"); 23 info!("Hello World!");
26 24
27 let mut adc = Adc::new(p.ADC3, &mut Delay); 25 let mut adc = Adc::new(p.ADC3, &mut Delay);
diff --git a/examples/stm32h7/src/bin/blinky.rs b/examples/stm32h7/src/bin/blinky.rs
index 98ce15cc6..12f08c0fd 100644
--- a/examples/stm32h7/src/bin/blinky.rs
+++ b/examples/stm32h7/src/bin/blinky.rs
@@ -3,14 +3,14 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer};
8use embassy_stm32::gpio::{Level, Output, Speed}; 7use embassy_stm32::gpio::{Level, Output, Speed};
9use embassy_stm32::Peripherals; 8use embassy_time::{Duration, Timer};
10use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
11 10
12#[embassy_executor::main] 11#[embassy_executor::main]
13async fn main(_spawner: Spawner, p: Peripherals) { 12async fn main(_spawner: Spawner) {
13 let p = embassy_stm32::init(Default::default());
14 info!("Hello World!"); 14 info!("Hello World!");
15 15
16 let mut led = Output::new(p.PB14, Level::High, Speed::Low); 16 let mut led = Output::new(p.PB14, Level::High, Speed::Low);
diff --git a/examples/stm32h7/src/bin/button_exti.rs b/examples/stm32h7/src/bin/button_exti.rs
index 60dfb362b..dfe587d41 100644
--- a/examples/stm32h7/src/bin/button_exti.rs
+++ b/examples/stm32h7/src/bin/button_exti.rs
@@ -3,14 +3,14 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::exti::ExtiInput; 7use embassy_stm32::exti::ExtiInput;
8use embassy_stm32::gpio::{Input, Pull}; 8use embassy_stm32::gpio::{Input, Pull};
9use embassy_stm32::Peripherals;
10use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
11 10
12#[embassy_executor::main] 11#[embassy_executor::main]
13async fn main(_spawner: Spawner, p: Peripherals) { 12async fn main(_spawner: Spawner) {
13 let p = embassy_stm32::init(Default::default());
14 info!("Hello World!"); 14 info!("Hello World!");
15 15
16 let button = Input::new(p.PC13, Pull::Down); 16 let button = Input::new(p.PC13, Pull::Down);
diff --git a/examples/stm32h7/src/bin/camera.rs b/examples/stm32h7/src/bin/camera.rs
index a3bb2d5e2..9c443b83a 100644
--- a/examples/stm32h7/src/bin/camera.rs
+++ b/examples/stm32h7/src/bin/camera.rs
@@ -2,18 +2,24 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use embassy_executor::executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_executor::time::{Duration, Timer};
7use embassy_stm32::dcmi::{self, *}; 6use embassy_stm32::dcmi::{self, *};
8use embassy_stm32::gpio::{Level, Output, Speed}; 7use embassy_stm32::gpio::{Level, Output, Speed};
9use embassy_stm32::i2c::I2c; 8use embassy_stm32::i2c::I2c;
10use embassy_stm32::rcc::{Mco, Mco1Source, McoClock}; 9use embassy_stm32::rcc::{Mco, Mco1Source, McoClock};
11use embassy_stm32::time::{khz, mhz}; 10use embassy_stm32::time::{khz, mhz};
12use embassy_stm32::{interrupt, Config, Peripherals}; 11use embassy_stm32::{interrupt, Config};
12use embassy_time::{Duration, Timer};
13use ov7725::*;
13use {defmt_rtt as _, panic_probe as _}; 14use {defmt_rtt as _, panic_probe as _};
14 15
15#[allow(unused)] 16const WIDTH: usize = 100;
16pub fn config() -> Config { 17const HEIGHT: usize = 100;
18
19static mut FRAME: [u32; WIDTH * HEIGHT / 2] = [0u32; WIDTH * HEIGHT / 2];
20
21#[embassy_executor::main]
22async fn main(_spawner: Spawner) {
17 let mut config = Config::default(); 23 let mut config = Config::default();
18 config.rcc.sys_ck = Some(mhz(400)); 24 config.rcc.sys_ck = Some(mhz(400));
19 config.rcc.hclk = Some(mhz(400)); 25 config.rcc.hclk = Some(mhz(400));
@@ -22,18 +28,8 @@ pub fn config() -> Config {
22 config.rcc.pclk2 = Some(mhz(100)); 28 config.rcc.pclk2 = Some(mhz(100));
23 config.rcc.pclk3 = Some(mhz(100)); 29 config.rcc.pclk3 = Some(mhz(100));
24 config.rcc.pclk4 = Some(mhz(100)); 30 config.rcc.pclk4 = Some(mhz(100));
25 config 31 let p = embassy_stm32::init(config);
26}
27
28use ov7725::*;
29
30const WIDTH: usize = 100;
31const HEIGHT: usize = 100;
32
33static mut FRAME: [u32; WIDTH * HEIGHT / 2] = [0u32; WIDTH * HEIGHT / 2];
34 32
35#[embassy_executor::main(config = "config()")]
36async fn main(_spawner: Spawner, p: Peripherals) {
37 defmt::info!("Hello World!"); 33 defmt::info!("Hello World!");
38 let mco = Mco::new(p.MCO1, p.PA8, Mco1Source::Hsi, McoClock::Divided(3)); 34 let mco = Mco::new(p.MCO1, p.PA8, Mco1Source::Hsi, McoClock::Divided(3));
39 35
@@ -87,8 +83,8 @@ mod ov7725 {
87 use core::marker::PhantomData; 83 use core::marker::PhantomData;
88 84
89 use defmt::Format; 85 use defmt::Format;
90 use embassy_executor::time::{Duration, Timer};
91 use embassy_stm32::rcc::{Mco, McoInstance}; 86 use embassy_stm32::rcc::{Mco, McoInstance};
87 use embassy_time::{Duration, Timer};
92 use embedded_hal_async::i2c::I2c; 88 use embedded_hal_async::i2c::I2c;
93 89
94 #[repr(u8)] 90 #[repr(u8)]
diff --git a/examples/stm32h7/src/bin/dac.rs b/examples/stm32h7/src/bin/dac.rs
index dece74bba..f12716370 100644
--- a/examples/stm32h7/src/bin/dac.rs
+++ b/examples/stm32h7/src/bin/dac.rs
@@ -9,19 +9,15 @@ use embassy_stm32::time::mhz;
9use embassy_stm32::Config; 9use embassy_stm32::Config;
10use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
11 11
12pub fn config() -> Config {
13 let mut config = Config::default();
14 config.rcc.sys_ck = Some(mhz(400));
15 config.rcc.hclk = Some(mhz(200));
16 config.rcc.pll1.q_ck = Some(mhz(100));
17 config
18}
19
20#[entry] 12#[entry]
21fn main() -> ! { 13fn main() -> ! {
22 info!("Hello World, dude!"); 14 info!("Hello World, dude!");
23 15
24 let p = embassy_stm32::init(config()); 16 let mut config = Config::default();
17 config.rcc.sys_ck = Some(mhz(400));
18 config.rcc.hclk = Some(mhz(200));
19 config.rcc.pll1.q_ck = Some(mhz(100));
20 let p = embassy_stm32::init(config);
25 21
26 let mut dac = Dac::new_1ch(p.DAC1, p.PA4); 22 let mut dac = Dac::new_1ch(p.DAC1, p.PA4);
27 23
diff --git a/examples/stm32h7/src/bin/eth.rs b/examples/stm32h7/src/bin/eth.rs
index 4282fcedd..83210bcb5 100644
--- a/examples/stm32h7/src/bin/eth.rs
+++ b/examples/stm32h7/src/bin/eth.rs
@@ -3,8 +3,7 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer};
8use embassy_net::tcp::TcpSocket; 7use embassy_net::tcp::TcpSocket;
9use embassy_net::{Ipv4Address, Stack, StackResources}; 8use embassy_net::{Ipv4Address, Stack, StackResources};
10use embassy_stm32::eth::generic_smi::GenericSMI; 9use embassy_stm32::eth::generic_smi::GenericSMI;
@@ -12,7 +11,8 @@ use embassy_stm32::eth::{Ethernet, State};
12use embassy_stm32::peripherals::ETH; 11use embassy_stm32::peripherals::ETH;
13use embassy_stm32::rng::Rng; 12use embassy_stm32::rng::Rng;
14use embassy_stm32::time::mhz; 13use embassy_stm32::time::mhz;
15use embassy_stm32::{interrupt, Config, Peripherals}; 14use embassy_stm32::{interrupt, Config};
15use embassy_time::{Duration, Timer};
16use embassy_util::Forever; 16use embassy_util::Forever;
17use embedded_io::asynch::Write; 17use embedded_io::asynch::Write;
18use rand_core::RngCore; 18use rand_core::RngCore;
@@ -33,16 +33,13 @@ async fn net_task(stack: &'static Stack<Device>) -> ! {
33 stack.run().await 33 stack.run().await
34} 34}
35 35
36pub fn config() -> Config { 36#[embassy_executor::main]
37async fn main(spawner: Spawner) -> ! {
37 let mut config = Config::default(); 38 let mut config = Config::default();
38 config.rcc.sys_ck = Some(mhz(400)); 39 config.rcc.sys_ck = Some(mhz(400));
39 config.rcc.hclk = Some(mhz(200)); 40 config.rcc.hclk = Some(mhz(200));
40 config.rcc.pll1.q_ck = Some(mhz(100)); 41 config.rcc.pll1.q_ck = Some(mhz(100));
41 config 42 let p = embassy_stm32::init(config);
42}
43
44#[embassy_executor::main(config = "config()")]
45async fn main(spawner: Spawner, p: Peripherals) -> ! {
46 info!("Hello World!"); 43 info!("Hello World!");
47 44
48 // Generate random seed. 45 // Generate random seed.
diff --git a/examples/stm32h7/src/bin/eth_client.rs b/examples/stm32h7/src/bin/eth_client.rs
index a66c6f196..99946f504 100644
--- a/examples/stm32h7/src/bin/eth_client.rs
+++ b/examples/stm32h7/src/bin/eth_client.rs
@@ -3,8 +3,7 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer};
8use embassy_net::tcp::client::{TcpClient, TcpClientState}; 7use embassy_net::tcp::client::{TcpClient, TcpClientState};
9use embassy_net::{Stack, StackResources}; 8use embassy_net::{Stack, StackResources};
10use embassy_stm32::eth::generic_smi::GenericSMI; 9use embassy_stm32::eth::generic_smi::GenericSMI;
@@ -12,7 +11,8 @@ use embassy_stm32::eth::{Ethernet, State};
12use embassy_stm32::peripherals::ETH; 11use embassy_stm32::peripherals::ETH;
13use embassy_stm32::rng::Rng; 12use embassy_stm32::rng::Rng;
14use embassy_stm32::time::mhz; 13use embassy_stm32::time::mhz;
15use embassy_stm32::{interrupt, Config, Peripherals}; 14use embassy_stm32::{interrupt, Config};
15use embassy_time::{Duration, Timer};
16use embassy_util::Forever; 16use embassy_util::Forever;
17use embedded_io::asynch::Write; 17use embedded_io::asynch::Write;
18use embedded_nal_async::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpConnect}; 18use embedded_nal_async::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpConnect};
@@ -34,16 +34,13 @@ async fn net_task(stack: &'static Stack<Device>) -> ! {
34 stack.run().await 34 stack.run().await
35} 35}
36 36
37pub fn config() -> Config { 37#[embassy_executor::main]
38async fn main(spawner: Spawner) -> ! {
38 let mut config = Config::default(); 39 let mut config = Config::default();
39 config.rcc.sys_ck = Some(mhz(400)); 40 config.rcc.sys_ck = Some(mhz(400));
40 config.rcc.hclk = Some(mhz(200)); 41 config.rcc.hclk = Some(mhz(200));
41 config.rcc.pll1.q_ck = Some(mhz(100)); 42 config.rcc.pll1.q_ck = Some(mhz(100));
42 config 43 let p = embassy_stm32::init(config);
43}
44
45#[embassy_executor::main(config = "config()")]
46async fn main(spawner: Spawner, p: Peripherals) -> ! {
47 info!("Hello World!"); 44 info!("Hello World!");
48 45
49 // Generate random seed. 46 // Generate random seed.
diff --git a/examples/stm32h7/src/bin/flash.rs b/examples/stm32h7/src/bin/flash.rs
index 0c477deba..6682c64d5 100644
--- a/examples/stm32h7/src/bin/flash.rs
+++ b/examples/stm32h7/src/bin/flash.rs
@@ -3,15 +3,15 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::{info, unwrap}; 5use defmt::{info, unwrap};
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer};
8use embassy_stm32::flash::Flash; 7use embassy_stm32::flash::Flash;
9use embassy_stm32::Peripherals; 8use embassy_time::{Duration, Timer};
10use embedded_storage::nor_flash::{NorFlash, ReadNorFlash}; 9use embedded_storage::nor_flash::{NorFlash, ReadNorFlash};
11use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
12 11
13#[embassy_executor::main] 12#[embassy_executor::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 13async fn main(_spawner: Spawner) {
14 let p = embassy_stm32::init(Default::default());
15 info!("Hello Flash!"); 15 info!("Hello Flash!");
16 16
17 const ADDR: u32 = 0x08_0000; 17 const ADDR: u32 = 0x08_0000;
diff --git a/examples/stm32h7/src/bin/fmc.rs b/examples/stm32h7/src/bin/fmc.rs
index 5140a6e22..85c690fe6 100644
--- a/examples/stm32h7/src/bin/fmc.rs
+++ b/examples/stm32h7/src/bin/fmc.rs
@@ -3,23 +3,21 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Delay, Duration, Timer};
8use embassy_stm32::fmc::Fmc; 7use embassy_stm32::fmc::Fmc;
9use embassy_stm32::time::mhz; 8use embassy_stm32::time::mhz;
10use embassy_stm32::{Config, Peripherals}; 9use embassy_stm32::Config;
10use embassy_time::{Delay, Duration, Timer};
11use {defmt_rtt as _, panic_probe as _}; 11use {defmt_rtt as _, panic_probe as _};
12 12
13pub fn config() -> Config { 13#[embassy_executor::main]
14async fn main(_spawner: Spawner) {
14 let mut config = Config::default(); 15 let mut config = Config::default();
15 config.rcc.sys_ck = Some(mhz(400)); 16 config.rcc.sys_ck = Some(mhz(400));
16 config.rcc.hclk = Some(mhz(200)); 17 config.rcc.hclk = Some(mhz(200));
17 config.rcc.pll1.q_ck = Some(mhz(100)); 18 config.rcc.pll1.q_ck = Some(mhz(100));
18 config 19 let p = embassy_stm32::init(config);
19}
20 20
21#[embassy_executor::main(config = "config()")]
22async fn main(_spawner: Spawner, p: Peripherals) {
23 info!("Hello World!"); 21 info!("Hello World!");
24 22
25 let mut core_peri = cortex_m::Peripherals::take().unwrap(); 23 let mut core_peri = cortex_m::Peripherals::take().unwrap();
diff --git a/examples/stm32h7/src/bin/low_level_timer_api.rs b/examples/stm32h7/src/bin/low_level_timer_api.rs
index f2477c7a7..1972f8ff2 100644
--- a/examples/stm32h7/src/bin/low_level_timer_api.rs
+++ b/examples/stm32h7/src/bin/low_level_timer_api.rs
@@ -3,16 +3,17 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer};
8use embassy_stm32::gpio::low_level::AFType; 7use embassy_stm32::gpio::low_level::AFType;
9use embassy_stm32::gpio::Speed; 8use embassy_stm32::gpio::Speed;
10use embassy_stm32::pwm::*; 9use embassy_stm32::pwm::*;
11use embassy_stm32::time::{khz, mhz, Hertz}; 10use embassy_stm32::time::{khz, mhz, Hertz};
12use embassy_stm32::{into_ref, Config, Peripheral, PeripheralRef, Peripherals}; 11use embassy_stm32::{into_ref, Config, Peripheral, PeripheralRef};
12use embassy_time::{Duration, Timer};
13use {defmt_rtt as _, panic_probe as _}; 13use {defmt_rtt as _, panic_probe as _};
14 14
15pub fn config() -> Config { 15#[embassy_executor::main]
16async fn main(_spawner: Spawner) {
16 let mut config = Config::default(); 17 let mut config = Config::default();
17 config.rcc.sys_ck = Some(mhz(400)); 18 config.rcc.sys_ck = Some(mhz(400));
18 config.rcc.hclk = Some(mhz(400)); 19 config.rcc.hclk = Some(mhz(400));
@@ -21,11 +22,8 @@ pub fn config() -> Config {
21 config.rcc.pclk2 = Some(mhz(100)); 22 config.rcc.pclk2 = Some(mhz(100));
22 config.rcc.pclk3 = Some(mhz(100)); 23 config.rcc.pclk3 = Some(mhz(100));
23 config.rcc.pclk4 = Some(mhz(100)); 24 config.rcc.pclk4 = Some(mhz(100));
24 config 25 let p = embassy_stm32::init(config);
25}
26 26
27#[embassy_executor::main(config = "config()")]
28async fn main(_spawner: Spawner, p: Peripherals) {
29 info!("Hello World!"); 27 info!("Hello World!");
30 28
31 let mut pwm = SimplePwm32::new(p.TIM5, p.PA0, p.PA1, p.PA2, p.PA3, khz(10)); 29 let mut pwm = SimplePwm32::new(p.TIM5, p.PA0, p.PA1, p.PA2, p.PA3, khz(10));
diff --git a/examples/stm32h7/src/bin/mco.rs b/examples/stm32h7/src/bin/mco.rs
index 83ba3742b..036455d5e 100644
--- a/examples/stm32h7/src/bin/mco.rs
+++ b/examples/stm32h7/src/bin/mco.rs
@@ -3,15 +3,15 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer};
8use embassy_stm32::gpio::{Level, Output, Speed}; 7use embassy_stm32::gpio::{Level, Output, Speed};
9use embassy_stm32::rcc::{Mco, Mco1Source, McoClock}; 8use embassy_stm32::rcc::{Mco, Mco1Source, McoClock};
10use embassy_stm32::Peripherals; 9use embassy_time::{Duration, Timer};
11use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
12 11
13#[embassy_executor::main] 12#[embassy_executor::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 13async fn main(_spawner: Spawner) {
14 let p = embassy_stm32::init(Default::default());
15 info!("Hello World!"); 15 info!("Hello World!");
16 16
17 let mut led = Output::new(p.PB14, Level::High, Speed::Low); 17 let mut led = Output::new(p.PB14, Level::High, Speed::Low);
diff --git a/examples/stm32h7/src/bin/pwm.rs b/examples/stm32h7/src/bin/pwm.rs
index 36ed2e4a4..c5c0dd290 100644
--- a/examples/stm32h7/src/bin/pwm.rs
+++ b/examples/stm32h7/src/bin/pwm.rs
@@ -3,15 +3,16 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer};
8use embassy_stm32::pwm::simple_pwm::{PwmPin, SimplePwm}; 7use embassy_stm32::pwm::simple_pwm::{PwmPin, SimplePwm};
9use embassy_stm32::pwm::Channel; 8use embassy_stm32::pwm::Channel;
10use embassy_stm32::time::{khz, mhz}; 9use embassy_stm32::time::{khz, mhz};
11use embassy_stm32::{Config, Peripherals}; 10use embassy_stm32::Config;
11use embassy_time::{Duration, Timer};
12use {defmt_rtt as _, panic_probe as _}; 12use {defmt_rtt as _, panic_probe as _};
13 13
14pub fn config() -> Config { 14#[embassy_executor::main]
15async fn main(_spawner: Spawner) {
15 let mut config = Config::default(); 16 let mut config = Config::default();
16 config.rcc.sys_ck = Some(mhz(400)); 17 config.rcc.sys_ck = Some(mhz(400));
17 config.rcc.hclk = Some(mhz(400)); 18 config.rcc.hclk = Some(mhz(400));
@@ -20,11 +21,7 @@ pub fn config() -> Config {
20 config.rcc.pclk2 = Some(mhz(100)); 21 config.rcc.pclk2 = Some(mhz(100));
21 config.rcc.pclk3 = Some(mhz(100)); 22 config.rcc.pclk3 = Some(mhz(100));
22 config.rcc.pclk4 = Some(mhz(100)); 23 config.rcc.pclk4 = Some(mhz(100));
23 config 24 let p = embassy_stm32::init(config);
24}
25
26#[embassy_executor::main(config = "config()")]
27async fn main(_spawner: Spawner, p: Peripherals) {
28 info!("Hello World!"); 25 info!("Hello World!");
29 26
30 let ch1 = PwmPin::new_ch1(p.PA6); 27 let ch1 = PwmPin::new_ch1(p.PA6);
diff --git a/examples/stm32h7/src/bin/rng.rs b/examples/stm32h7/src/bin/rng.rs
index 81fb3d162..af9be0b62 100644
--- a/examples/stm32h7/src/bin/rng.rs
+++ b/examples/stm32h7/src/bin/rng.rs
@@ -3,13 +3,13 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::rng::Rng; 7use embassy_stm32::rng::Rng;
8use embassy_stm32::Peripherals;
9use {defmt_rtt as _, panic_probe as _}; 8use {defmt_rtt as _, panic_probe as _};
10 9
11#[embassy_executor::main] 10#[embassy_executor::main]
12async fn main(_spawner: Spawner, p: Peripherals) { 11async fn main(_spawner: Spawner) {
12 let p = embassy_stm32::init(Default::default());
13 info!("Hello World!"); 13 info!("Hello World!");
14 14
15 let mut rng = Rng::new(p.RNG); 15 let mut rng = Rng::new(p.RNG);
diff --git a/examples/stm32h7/src/bin/sdmmc.rs b/examples/stm32h7/src/bin/sdmmc.rs
index 19ae5ade1..26d1db01e 100644
--- a/examples/stm32h7/src/bin/sdmmc.rs
+++ b/examples/stm32h7/src/bin/sdmmc.rs
@@ -3,20 +3,17 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::sdmmc::Sdmmc; 7use embassy_stm32::sdmmc::Sdmmc;
8use embassy_stm32::time::mhz; 8use embassy_stm32::time::mhz;
9use embassy_stm32::{interrupt, Config, Peripherals}; 9use embassy_stm32::{interrupt, Config};
10use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
11 11
12fn config() -> Config { 12#[embassy_executor::main]
13async fn main(_spawner: Spawner) -> ! {
13 let mut config = Config::default(); 14 let mut config = Config::default();
14 config.rcc.sys_ck = Some(mhz(200)); 15 config.rcc.sys_ck = Some(mhz(200));
15 config 16 let p = embassy_stm32::init(config);
16}
17
18#[embassy_executor::main(config = "config()")]
19async fn main(_spawner: Spawner, p: Peripherals) -> ! {
20 info!("Hello World!"); 17 info!("Hello World!");
21 18
22 let irq = interrupt::take!(SDMMC1); 19 let irq = interrupt::take!(SDMMC1);
diff --git a/examples/stm32h7/src/bin/signal.rs b/examples/stm32h7/src/bin/signal.rs
index 2fc75c7af..be2ac268e 100644
--- a/examples/stm32h7/src/bin/signal.rs
+++ b/examples/stm32h7/src/bin/signal.rs
@@ -3,9 +3,8 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::{info, unwrap}; 5use defmt::{info, unwrap};
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_executor::time::{Duration, Timer}; 7use embassy_time::{Duration, Timer};
8use embassy_stm32::Peripherals;
9use embassy_util::channel::signal::Signal; 8use embassy_util::channel::signal::Signal;
10use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
11 10
@@ -25,7 +24,8 @@ async fn my_sending_task() {
25} 24}
26 25
27#[embassy_executor::main] 26#[embassy_executor::main]
28async fn main(spawner: Spawner, _p: Peripherals) { 27async fn main(spawner: Spawner) {
28 let _p = embassy_stm32::init(Default::default());
29 unwrap!(spawner.spawn(my_sending_task())); 29 unwrap!(spawner.spawn(my_sending_task()));
30 30
31 loop { 31 loop {
diff --git a/examples/stm32h7/src/bin/spi.rs b/examples/stm32h7/src/bin/spi.rs
index dc8cb7f47..c28f937a8 100644
--- a/examples/stm32h7/src/bin/spi.rs
+++ b/examples/stm32h7/src/bin/spi.rs
@@ -7,7 +7,7 @@ use core::str::from_utf8;
7 7
8use cortex_m_rt::entry; 8use cortex_m_rt::entry;
9use defmt::*; 9use defmt::*;
10use embassy_executor::executor::Executor; 10use embassy_executor::Executor;
11use embassy_stm32::dma::NoDma; 11use embassy_stm32::dma::NoDma;
12use embassy_stm32::peripherals::SPI3; 12use embassy_stm32::peripherals::SPI3;
13use embassy_stm32::time::mhz; 13use embassy_stm32::time::mhz;
@@ -16,14 +16,6 @@ use embassy_util::Forever;
16use heapless::String; 16use heapless::String;
17use {defmt_rtt as _, panic_probe as _}; 17use {defmt_rtt as _, panic_probe as _};
18 18
19pub fn config() -> Config {
20 let mut config = Config::default();
21 config.rcc.sys_ck = Some(mhz(400));
22 config.rcc.hclk = Some(mhz(200));
23 config.rcc.pll1.q_ck = Some(mhz(100));
24 config
25}
26
27#[embassy_executor::task] 19#[embassy_executor::task]
28async fn main_task(mut spi: spi::Spi<'static, SPI3, NoDma, NoDma>) { 20async fn main_task(mut spi: spi::Spi<'static, SPI3, NoDma, NoDma>) {
29 for n in 0u32.. { 21 for n in 0u32.. {
@@ -45,7 +37,11 @@ static EXECUTOR: Forever<Executor> = Forever::new();
45fn main() -> ! { 37fn main() -> ! {
46 info!("Hello World!"); 38 info!("Hello World!");
47 39
48 let p = embassy_stm32::init(config()); 40 let mut config = Config::default();
41 config.rcc.sys_ck = Some(mhz(400));
42 config.rcc.hclk = Some(mhz(200));
43 config.rcc.pll1.q_ck = Some(mhz(100));
44 let p = embassy_stm32::init(config);
49 45
50 let spi = spi::Spi::new( 46 let spi = spi::Spi::new(
51 p.SPI3, 47 p.SPI3,
diff --git a/examples/stm32h7/src/bin/spi_dma.rs b/examples/stm32h7/src/bin/spi_dma.rs
index 2631ed30c..6c78c194f 100644
--- a/examples/stm32h7/src/bin/spi_dma.rs
+++ b/examples/stm32h7/src/bin/spi_dma.rs
@@ -7,7 +7,7 @@ use core::str::from_utf8;
7 7
8use cortex_m_rt::entry; 8use cortex_m_rt::entry;
9use defmt::*; 9use defmt::*;
10use embassy_executor::executor::Executor; 10use embassy_executor::Executor;
11use embassy_stm32::peripherals::{DMA1_CH3, DMA1_CH4, SPI3}; 11use embassy_stm32::peripherals::{DMA1_CH3, DMA1_CH4, SPI3};
12use embassy_stm32::time::mhz; 12use embassy_stm32::time::mhz;
13use embassy_stm32::{spi, Config}; 13use embassy_stm32::{spi, Config};
@@ -15,14 +15,6 @@ use embassy_util::Forever;
15use heapless::String; 15use heapless::String;
16use {defmt_rtt as _, panic_probe as _}; 16use {defmt_rtt as _, panic_probe as _};
17 17
18pub fn config() -> Config {
19 let mut config = Config::default();
20 config.rcc.sys_ck = Some(mhz(400));
21 config.rcc.hclk = Some(mhz(200));
22 config.rcc.pll1.q_ck = Some(mhz(100));
23 config
24}
25
26#[embassy_executor::task] 18#[embassy_executor::task]
27async fn main_task(mut spi: spi::Spi<'static, SPI3, DMA1_CH3, DMA1_CH4>) { 19async fn main_task(mut spi: spi::Spi<'static, SPI3, DMA1_CH3, DMA1_CH4>) {
28 for n in 0u32.. { 20 for n in 0u32.. {
@@ -41,7 +33,11 @@ static EXECUTOR: Forever<Executor> = Forever::new();
41fn main() -> ! { 33fn main() -> ! {
42 info!("Hello World!"); 34 info!("Hello World!");
43 35
44 let p = embassy_stm32::init(config()); 36 let mut config = Config::default();
37 config.rcc.sys_ck = Some(mhz(400));
38 config.rcc.hclk = Some(mhz(200));
39 config.rcc.pll1.q_ck = Some(mhz(100));
40 let p = embassy_stm32::init(config);
45 41
46 let spi = spi::Spi::new( 42 let spi = spi::Spi::new(
47 p.SPI3, 43 p.SPI3,
diff --git a/examples/stm32h7/src/bin/usart.rs b/examples/stm32h7/src/bin/usart.rs
index e491fb39d..1384d54c6 100644
--- a/examples/stm32h7/src/bin/usart.rs
+++ b/examples/stm32h7/src/bin/usart.rs
@@ -4,7 +4,7 @@
4 4
5use cortex_m_rt::entry; 5use cortex_m_rt::entry;
6use defmt::*; 6use defmt::*;
7use embassy_executor::executor::Executor; 7use embassy_executor::Executor;
8use embassy_stm32::dma::NoDma; 8use embassy_stm32::dma::NoDma;
9use embassy_stm32::usart::{Config, Uart}; 9use embassy_stm32::usart::{Config, Uart};
10use embassy_util::Forever; 10use embassy_util::Forever;
diff --git a/examples/stm32h7/src/bin/usart_dma.rs b/examples/stm32h7/src/bin/usart_dma.rs
index aacda45bc..f8d58bb84 100644
--- a/examples/stm32h7/src/bin/usart_dma.rs
+++ b/examples/stm32h7/src/bin/usart_dma.rs
@@ -6,7 +6,7 @@ use core::fmt::Write;
6 6
7use cortex_m_rt::entry; 7use cortex_m_rt::entry;
8use defmt::*; 8use defmt::*;
9use embassy_executor::executor::Executor; 9use embassy_executor::Executor;
10use embassy_stm32::dma::NoDma; 10use embassy_stm32::dma::NoDma;
11use embassy_stm32::usart::{Config, Uart}; 11use embassy_stm32::usart::{Config, Uart};
12use embassy_util::Forever; 12use embassy_util::Forever;
diff --git a/examples/stm32h7/src/bin/usart_split.rs b/examples/stm32h7/src/bin/usart_split.rs
index 12bb0ce9c..64080ec45 100644
--- a/examples/stm32h7/src/bin/usart_split.rs
+++ b/examples/stm32h7/src/bin/usart_split.rs
@@ -3,11 +3,10 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::dma::NoDma; 7use embassy_stm32::dma::NoDma;
8use embassy_stm32::peripherals::{DMA1_CH1, UART7}; 8use embassy_stm32::peripherals::{DMA1_CH1, UART7};
9use embassy_stm32::usart::{Config, Uart, UartRx}; 9use embassy_stm32::usart::{Config, Uart, UartRx};
10use embassy_stm32::Peripherals;
11use embassy_util::blocking_mutex::raw::ThreadModeRawMutex; 10use embassy_util::blocking_mutex::raw::ThreadModeRawMutex;
12use embassy_util::channel::mpmc::Channel; 11use embassy_util::channel::mpmc::Channel;
13use {defmt_rtt as _, panic_probe as _}; 12use {defmt_rtt as _, panic_probe as _};
@@ -27,7 +26,8 @@ async fn writer(mut usart: Uart<'static, UART7, NoDma, NoDma>) {
27static CHANNEL: Channel<ThreadModeRawMutex, [u8; 8], 1> = Channel::new(); 26static CHANNEL: Channel<ThreadModeRawMutex, [u8; 8], 1> = Channel::new();
28 27
29#[embassy_executor::main] 28#[embassy_executor::main]
30async fn main(spawner: Spawner, p: Peripherals) -> ! { 29async fn main(spawner: Spawner) -> ! {
30 let p = embassy_stm32::init(Default::default());
31 info!("Hello World!"); 31 info!("Hello World!");
32 32
33 let config = Config::default(); 33 let config = Config::default();