aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2022-04-02 04:35:06 +0200
committerDario Nieuwenhuis <[email protected]>2022-04-02 04:35:06 +0200
commit82803bffdab0842bf6c3e4bce21131d437b06669 (patch)
tree588c65c93b31b897f53d389f7876dc2703eb0fa8 /examples
parenta9e63167e1ec230ca3d28da771378f5f4936a840 (diff)
Use embassy/defmt-timestamp-uptime in all examples.
Diffstat (limited to 'examples')
-rw-r--r--examples/nrf/Cargo.toml2
-rw-r--r--examples/nrf/src/bin/awaitable_timer.rs8
-rw-r--r--examples/nrf/src/bin/blinky.rs6
-rw-r--r--examples/nrf/src/bin/buffered_uart.rs8
-rw-r--r--examples/nrf/src/bin/executor_fairness_test.rs8
-rw-r--r--examples/nrf/src/bin/gpiote_channel.rs8
-rw-r--r--examples/nrf/src/bin/gpiote_port.rs8
-rw-r--r--examples/nrf/src/bin/mpsc.rs6
-rw-r--r--examples/nrf/src/bin/multiprio.rs8
-rw-r--r--examples/nrf/src/bin/nvmc.rs7
-rw-r--r--examples/nrf/src/bin/ppi.rs8
-rw-r--r--examples/nrf/src/bin/pwm.rs5
-rw-r--r--examples/nrf/src/bin/pwm_double_sequence.rs5
-rw-r--r--examples/nrf/src/bin/pwm_sequence.rs5
-rw-r--r--examples/nrf/src/bin/pwm_sequence_ppi.rs5
-rw-r--r--examples/nrf/src/bin/pwm_sequence_ws2812b.rs5
-rw-r--r--examples/nrf/src/bin/pwm_servo.rs5
-rw-r--r--examples/nrf/src/bin/qspi.rs9
-rw-r--r--examples/nrf/src/bin/qspi_lowpower.rs8
-rw-r--r--examples/nrf/src/bin/raw_spawn.rs9
-rw-r--r--examples/nrf/src/bin/rng.rs6
-rw-r--r--examples/nrf/src/bin/saadc.rs7
-rw-r--r--examples/nrf/src/bin/saadc_continuous.rs7
-rw-r--r--examples/nrf/src/bin/spim.rs8
-rw-r--r--examples/nrf/src/bin/temp.rs14
-rw-r--r--examples/nrf/src/bin/timer.rs10
-rw-r--r--examples/nrf/src/bin/twim.rs6
-rw-r--r--examples/nrf/src/bin/twim_lowpower.rs7
-rw-r--r--examples/nrf/src/bin/uart.rs8
-rw-r--r--examples/nrf/src/bin/uart_idle.rs8
-rw-r--r--examples/nrf/src/bin/uart_split.rs8
-rw-r--r--examples/nrf/src/bin/usb_uart.rs13
-rw-r--r--examples/nrf/src/bin/usb_uart_io.rs9
-rw-r--r--examples/nrf/src/bin/wdt.rs6
-rw-r--r--examples/nrf/src/example_common.rs17
-rw-r--r--examples/rp/Cargo.toml2
-rw-r--r--examples/rp/src/bin/blinky.rs6
-rw-r--r--examples/rp/src/bin/button.rs6
-rw-r--r--examples/rp/src/bin/spi.rs6
-rw-r--r--examples/rp/src/bin/spi_display.rs7
-rw-r--r--examples/rp/src/bin/uart.rs6
-rw-r--r--examples/rp/src/example_common.rs12
-rw-r--r--examples/stm32f0/Cargo.toml4
-rw-r--r--examples/stm32f0/src/bin/hello.rs5
-rw-r--r--examples/stm32f0/src/example_common.rs17
-rw-r--r--examples/stm32f1/Cargo.toml2
-rw-r--r--examples/stm32f1/src/bin/adc.rs8
-rw-r--r--examples/stm32f1/src/bin/blinky.rs7
-rw-r--r--examples/stm32f1/src/bin/hello.rs4
-rw-r--r--examples/stm32f1/src/example_common.rs17
-rw-r--r--examples/stm32f2/Cargo.toml2
-rw-r--r--examples/stm32f2/src/bin/blinky.rs8
-rw-r--r--examples/stm32f2/src/example_common.rs19
-rw-r--r--examples/stm32f3/Cargo.toml2
-rw-r--r--examples/stm32f3/src/bin/blinky.rs8
-rw-r--r--examples/stm32f3/src/bin/button.rs6
-rw-r--r--examples/stm32f3/src/bin/button_events.rs7
-rw-r--r--examples/stm32f3/src/bin/button_exti.rs6
-rw-r--r--examples/stm32f3/src/bin/hello.rs4
-rw-r--r--examples/stm32f3/src/bin/multiprio.rs6
-rw-r--r--examples/stm32f3/src/bin/spi_dma.rs6
-rw-r--r--examples/stm32f3/src/bin/usart_dma.rs6
-rw-r--r--examples/stm32f3/src/example_common.rs19
-rw-r--r--examples/stm32f4/Cargo.toml2
-rw-r--r--examples/stm32f4/src/bin/adc.rs6
-rw-r--r--examples/stm32f4/src/bin/blinky.rs6
-rw-r--r--examples/stm32f4/src/bin/button.rs6
-rw-r--r--examples/stm32f4/src/bin/button_exti.rs6
-rw-r--r--examples/stm32f4/src/bin/can.rs6
-rw-r--r--examples/stm32f4/src/bin/hello.rs4
-rw-r--r--examples/stm32f4/src/bin/multiprio.rs6
-rw-r--r--examples/stm32f4/src/bin/sdmmc.rs6
-rw-r--r--examples/stm32f4/src/bin/spi.rs6
-rw-r--r--examples/stm32f4/src/bin/spi_dma.rs6
-rw-r--r--examples/stm32f4/src/bin/usart.rs6
-rw-r--r--examples/stm32f4/src/bin/usart_dma.rs6
-rw-r--r--examples/stm32f4/src/bin/usb_uart.rs4
-rw-r--r--examples/stm32f4/src/bin/usb_uart_ulpi.rs4
-rw-r--r--examples/stm32f4/src/example_common.rs17
-rw-r--r--examples/stm32f7/Cargo.toml2
-rw-r--r--examples/stm32f7/src/bin/blinky.rs6
-rw-r--r--examples/stm32f7/src/bin/button.rs6
-rw-r--r--examples/stm32f7/src/bin/button_exti.rs6
-rw-r--r--examples/stm32f7/src/bin/eth.rs24
-rw-r--r--examples/stm32f7/src/bin/hello.rs4
-rw-r--r--examples/stm32f7/src/bin/sdmmc.rs6
-rw-r--r--examples/stm32f7/src/bin/usart_dma.rs6
-rw-r--r--examples/stm32f7/src/example_common.rs27
-rw-r--r--examples/stm32g0/Cargo.toml2
-rw-r--r--examples/stm32g0/src/bin/blinky.rs6
-rw-r--r--examples/stm32g0/src/bin/button.rs6
-rw-r--r--examples/stm32g0/src/bin/button_exti.rs6
-rw-r--r--examples/stm32g0/src/example_common.rs17
-rw-r--r--examples/stm32g4/Cargo.toml2
-rw-r--r--examples/stm32g4/src/bin/blinky.rs6
-rw-r--r--examples/stm32g4/src/bin/button.rs6
-rw-r--r--examples/stm32g4/src/bin/button_exti.rs6
-rw-r--r--examples/stm32g4/src/bin/pwm.rs6
-rw-r--r--examples/stm32g4/src/example_common.rs17
-rw-r--r--examples/stm32h7/Cargo.toml2
-rw-r--r--examples/stm32h7/src/bin/blinky.rs6
-rw-r--r--examples/stm32h7/src/bin/button_exti.rs6
-rw-r--r--examples/stm32h7/src/bin/camera.rs13
-rw-r--r--examples/stm32h7/src/bin/dac.rs17
-rw-r--r--examples/stm32h7/src/bin/eth.rs26
-rw-r--r--examples/stm32h7/src/bin/fmc.rs16
-rw-r--r--examples/stm32h7/src/bin/low_level_timer_api.rs6
-rw-r--r--examples/stm32h7/src/bin/mco.rs6
-rw-r--r--examples/stm32h7/src/bin/pwm.rs6
-rw-r--r--examples/stm32h7/src/bin/rng.rs6
-rw-r--r--examples/stm32h7/src/bin/sdmmc.rs6
-rw-r--r--examples/stm32h7/src/bin/spi.rs22
-rw-r--r--examples/stm32h7/src/bin/spi_dma.rs22
-rw-r--r--examples/stm32h7/src/bin/usart.rs6
-rw-r--r--examples/stm32h7/src/bin/usart_dma.rs6
-rw-r--r--examples/stm32h7/src/bin/usart_split.rs6
-rw-r--r--examples/stm32h7/src/example_common.rs28
-rw-r--r--examples/stm32l0/Cargo.toml2
-rw-r--r--examples/stm32l0/src/bin/blinky.rs6
-rw-r--r--examples/stm32l0/src/bin/button.rs6
-rw-r--r--examples/stm32l0/src/bin/button_exti.rs6
-rw-r--r--examples/stm32l0/src/bin/lorawan.rs4
-rw-r--r--examples/stm32l0/src/bin/raw_spawn.rs6
-rw-r--r--examples/stm32l0/src/bin/spi.rs6
-rw-r--r--examples/stm32l0/src/bin/usart_dma.rs6
-rw-r--r--examples/stm32l0/src/bin/usart_irq.rs6
-rw-r--r--examples/stm32l0/src/example_common.rs17
-rw-r--r--examples/stm32l1/Cargo.toml2
-rw-r--r--examples/stm32l1/src/bin/blinky.rs6
-rw-r--r--examples/stm32l1/src/bin/spi.rs6
-rw-r--r--examples/stm32l1/src/example_common.rs17
-rw-r--r--examples/stm32l4/Cargo.toml2
-rw-r--r--examples/stm32l4/src/bin/adc.rs6
-rw-r--r--examples/stm32l4/src/bin/blinky.rs6
-rw-r--r--examples/stm32l4/src/bin/button.rs6
-rw-r--r--examples/stm32l4/src/bin/button_exti.rs6
-rw-r--r--examples/stm32l4/src/bin/dac.rs6
-rw-r--r--examples/stm32l4/src/bin/i2c.rs6
-rw-r--r--examples/stm32l4/src/bin/i2c_blocking_async.rs6
-rw-r--r--examples/stm32l4/src/bin/i2c_dma.rs6
-rw-r--r--examples/stm32l4/src/bin/rng.rs6
-rw-r--r--examples/stm32l4/src/bin/spi.rs6
-rw-r--r--examples/stm32l4/src/bin/spi_blocking_async.rs6
-rw-r--r--examples/stm32l4/src/bin/spi_dma.rs6
-rw-r--r--examples/stm32l4/src/bin/usart.rs6
-rw-r--r--examples/stm32l4/src/bin/usart_blocking_async.rs6
-rw-r--r--examples/stm32l4/src/bin/usart_dma.rs6
-rw-r--r--examples/stm32l4/src/example_common.rs17
-rw-r--r--examples/stm32u5/Cargo.toml4
-rw-r--r--examples/stm32u5/src/bin/boot.rs6
-rw-r--r--examples/stm32u5/src/example_common.rs17
-rw-r--r--examples/stm32wb55/Cargo.toml2
-rw-r--r--examples/stm32wb55/src/bin/blinky.rs6
-rw-r--r--examples/stm32wb55/src/bin/button_exti.rs6
-rw-r--r--examples/stm32wb55/src/example_common.rs17
-rw-r--r--examples/stm32wl55/Cargo.toml2
-rw-r--r--examples/stm32wl55/src/bin/blinky.rs6
-rw-r--r--examples/stm32wl55/src/bin/button.rs6
-rw-r--r--examples/stm32wl55/src/bin/button_exti.rs6
-rw-r--r--examples/stm32wl55/src/bin/lorawan.rs4
-rw-r--r--examples/stm32wl55/src/bin/subghz.rs6
-rw-r--r--examples/stm32wl55/src/example_common.rs17
162 files changed, 490 insertions, 765 deletions
diff --git a/examples/nrf/Cargo.toml b/examples/nrf/Cargo.toml
index 7fdc27ffa..a704eb3bc 100644
--- a/examples/nrf/Cargo.toml
+++ b/examples/nrf/Cargo.toml
@@ -9,7 +9,7 @@ default = ["nightly"]
9nightly = ["embassy-nrf/nightly", "embassy-nrf/unstable-traits"] 9nightly = ["embassy-nrf/nightly", "embassy-nrf/unstable-traits"]
10 10
11[dependencies] 11[dependencies]
12embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 12embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
13embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote"] } 13embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote"] }
14 14
15defmt = "0.3" 15defmt = "0.3"
diff --git a/examples/nrf/src/bin/awaitable_timer.rs b/examples/nrf/src/bin/awaitable_timer.rs
index 98b656005..810b4bd6a 100644
--- a/examples/nrf/src/bin/awaitable_timer.rs
+++ b/examples/nrf/src/bin/awaitable_timer.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::info;
6mod example_common; 6use embassy::executor::Spawner;
7use embassy_nrf::interrupt; 7use embassy_nrf::interrupt;
8use embassy_nrf::timer::Timer; 8use embassy_nrf::timer::Timer;
9use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
10use example_common::info;
11 10
12use embassy::executor::Spawner; 11use defmt_rtt as _; // global logger
12use panic_probe as _;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/nrf/src/bin/blinky.rs b/examples/nrf/src/bin/blinky.rs
index 0fc004ed8..4828b08fb 100644
--- a/examples/nrf/src/bin/blinky.rs
+++ b/examples/nrf/src/bin/blinky.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner; 5use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 6use embassy::time::{Duration, Timer};
10use embassy_nrf::gpio::{Level, Output, OutputDrive}; 7use embassy_nrf::gpio::{Level, Output, OutputDrive};
11use embassy_nrf::Peripherals; 8use embassy_nrf::Peripherals;
12 9
10use defmt_rtt as _; // global logger
11use panic_probe as _;
12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
15 let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard); 15 let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard);
diff --git a/examples/nrf/src/bin/buffered_uart.rs b/examples/nrf/src/bin/buffered_uart.rs
index a2602ea6c..2cd163a9f 100644
--- a/examples/nrf/src/bin/buffered_uart.rs
+++ b/examples/nrf/src/bin/buffered_uart.rs
@@ -2,16 +2,16 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::io::{AsyncBufReadExt, AsyncWriteExt}; 7use embassy::io::{AsyncBufReadExt, AsyncWriteExt};
10use embassy_nrf::buffered_uarte::State; 8use embassy_nrf::buffered_uarte::State;
11use embassy_nrf::{buffered_uarte::BufferedUarte, interrupt, uarte, Peripherals}; 9use embassy_nrf::{buffered_uarte::BufferedUarte, interrupt, uarte, Peripherals};
12use example_common::*;
13use futures::pin_mut; 10use futures::pin_mut;
14 11
12use defmt_rtt as _; // global logger
13use panic_probe as _;
14
15#[embassy::main] 15#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 16async fn main(_spawner: Spawner, p: Peripherals) {
17 let mut config = uarte::Config::default(); 17 let mut config = uarte::Config::default();
diff --git a/examples/nrf/src/bin/executor_fairness_test.rs b/examples/nrf/src/bin/executor_fairness_test.rs
index 397bb16f6..7a356d14b 100644
--- a/examples/nrf/src/bin/executor_fairness_test.rs
+++ b/examples/nrf/src/bin/executor_fairness_test.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use example_common::*;
8
9use core::task::Poll; 5use core::task::Poll;
6use defmt::{info, unwrap};
10use embassy::executor::Spawner; 7use embassy::executor::Spawner;
11use embassy::time::{Duration, Instant, Timer}; 8use embassy::time::{Duration, Instant, Timer};
12use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
13 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13
14#[embassy::task] 14#[embassy::task]
15async fn run1() { 15async fn run1() {
16 loop { 16 loop {
diff --git a/examples/nrf/src/bin/gpiote_channel.rs b/examples/nrf/src/bin/gpiote_channel.rs
index f29dae022..339f779f8 100644
--- a/examples/nrf/src/bin/gpiote_channel.rs
+++ b/examples/nrf/src/bin/gpiote_channel.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::info;
6mod example_common;
7use example_common::*;
8
9use embassy::executor::Spawner; 6use embassy::executor::Spawner;
10use embassy_nrf::gpio::{Input, Pull}; 7use embassy_nrf::gpio::{Input, Pull};
11use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity}; 8use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity};
12use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
13 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
16 info!("Starting!"); 16 info!("Starting!");
diff --git a/examples/nrf/src/bin/gpiote_port.rs b/examples/nrf/src/bin/gpiote_port.rs
index 3ea9a6e67..dc6bd301f 100644
--- a/examples/nrf/src/bin/gpiote_port.rs
+++ b/examples/nrf/src/bin/gpiote_port.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::{info, unwrap};
6mod example_common;
7
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy_nrf::gpio::{AnyPin, Input, Pin as _, Pull}; 7use embassy_nrf::gpio::{AnyPin, Input, Pin as _, Pull};
10use embassy_nrf::Peripherals; 8use embassy_nrf::Peripherals;
11use example_common::*; 9
10use defmt_rtt as _; // global logger
11use panic_probe as _;
12 12
13#[embassy::task(pool_size = 4)] 13#[embassy::task(pool_size = 4)]
14async fn button_task(n: usize, mut pin: Input<'static, AnyPin>) { 14async fn button_task(n: usize, mut pin: Input<'static, AnyPin>) {
diff --git a/examples/nrf/src/bin/mpsc.rs b/examples/nrf/src/bin/mpsc.rs
index d50736d82..0cb182755 100644
--- a/examples/nrf/src/bin/mpsc.rs
+++ b/examples/nrf/src/bin/mpsc.rs
@@ -2,9 +2,6 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use defmt::unwrap; 5use defmt::unwrap;
9use embassy::blocking_mutex::raw::NoopRawMutex; 6use embassy::blocking_mutex::raw::NoopRawMutex;
10use embassy::channel::mpsc::{self, Channel, Sender, TryRecvError}; 7use embassy::channel::mpsc::{self, Channel, Sender, TryRecvError};
@@ -14,6 +11,9 @@ use embassy::util::Forever;
14use embassy_nrf::gpio::{Level, Output, OutputDrive}; 11use embassy_nrf::gpio::{Level, Output, OutputDrive};
15use embassy_nrf::Peripherals; 12use embassy_nrf::Peripherals;
16 13
14use defmt_rtt as _; // global logger
15use panic_probe as _;
16
17enum LedState { 17enum LedState {
18 On, 18 On,
19 Off, 19 Off,
diff --git a/examples/nrf/src/bin/multiprio.rs b/examples/nrf/src/bin/multiprio.rs
index 85e126908..e69f87d85 100644
--- a/examples/nrf/src/bin/multiprio.rs
+++ b/examples/nrf/src/bin/multiprio.rs
@@ -57,17 +57,17 @@
57#![no_main] 57#![no_main]
58#![feature(type_alias_impl_trait)] 58#![feature(type_alias_impl_trait)]
59 59
60#[path = "../example_common.rs"]
61mod example_common;
62use example_common::*;
63
64use cortex_m_rt::entry; 60use cortex_m_rt::entry;
61use defmt::{info, unwrap};
65use embassy::executor::{Executor, InterruptExecutor}; 62use embassy::executor::{Executor, InterruptExecutor};
66use embassy::interrupt::InterruptExt; 63use embassy::interrupt::InterruptExt;
67use embassy::time::{Duration, Instant, Timer}; 64use embassy::time::{Duration, Instant, Timer};
68use embassy::util::Forever; 65use embassy::util::Forever;
69use embassy_nrf::interrupt; 66use embassy_nrf::interrupt;
70 67
68use defmt_rtt as _; // global logger
69use panic_probe as _;
70
71#[embassy::task] 71#[embassy::task]
72async fn run_high() { 72async fn run_high() {
73 loop { 73 loop {
diff --git a/examples/nrf/src/bin/nvmc.rs b/examples/nrf/src/bin/nvmc.rs
index f36895636..7a57399f8 100644
--- a/examples/nrf/src/bin/nvmc.rs
+++ b/examples/nrf/src/bin/nvmc.rs
@@ -2,14 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::{info, unwrap};
6mod example_common;
7use embassy::executor::Spawner; 6use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
9use embassy_nrf::nvmc::Nvmc; 8use embassy_nrf::nvmc::Nvmc;
10use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
11use embedded_storage::nor_flash::{NorFlash, ReadNorFlash}; 10use embedded_storage::nor_flash::{NorFlash, ReadNorFlash};
12use example_common::*; 11
12use defmt_rtt as _; // global logger
13use panic_probe as _;
13 14
14#[embassy::main] 15#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 16async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/nrf/src/bin/ppi.rs b/examples/nrf/src/bin/ppi.rs
index 99246eeda..3c9a8148a 100644
--- a/examples/nrf/src/bin/ppi.rs
+++ b/examples/nrf/src/bin/ppi.rs
@@ -2,11 +2,8 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use example_common::*;
8
9use core::future::pending; 5use core::future::pending;
6use defmt::info;
10use embassy::executor::Spawner; 7use embassy::executor::Spawner;
11use embassy_nrf::gpio::{Input, Level, Output, OutputDrive, Pull}; 8use embassy_nrf::gpio::{Input, Level, Output, OutputDrive, Pull};
12use embassy_nrf::gpiote::{self, InputChannel, InputChannelPolarity}; 9use embassy_nrf::gpiote::{self, InputChannel, InputChannelPolarity};
@@ -14,6 +11,9 @@ use embassy_nrf::ppi::Ppi;
14use embassy_nrf::Peripherals; 11use embassy_nrf::Peripherals;
15use gpiote::{OutputChannel, OutputChannelPolarity}; 12use gpiote::{OutputChannel, OutputChannelPolarity};
16 13
14use defmt_rtt as _; // global logger
15use panic_probe as _;
16
17#[embassy::main] 17#[embassy::main]
18async fn main(_spawner: Spawner, p: Peripherals) { 18async fn main(_spawner: Spawner, p: Peripherals) {
19 info!("Starting!"); 19 info!("Starting!");
diff --git a/examples/nrf/src/bin/pwm.rs b/examples/nrf/src/bin/pwm.rs
index 68402ce22..7939e79e4 100644
--- a/examples/nrf/src/bin/pwm.rs
+++ b/examples/nrf/src/bin/pwm.rs
@@ -2,14 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use defmt::*; 5use defmt::*;
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
10use embassy_nrf::pwm::{Prescaler, SimplePwm}; 8use embassy_nrf::pwm::{Prescaler, SimplePwm};
11use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
12 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13
13// for i in range(1024): print(int((math.sin(i/512*math.pi)*0.4+0.5)**2*32767), ', ', end='') 14// for i in range(1024): print(int((math.sin(i/512*math.pi)*0.4+0.5)**2*32767), ', ', end='')
14static DUTY: [u16; 1024] = [ 15static DUTY: [u16; 1024] = [
15 8191, 8272, 8353, 8434, 8516, 8598, 8681, 8764, 8847, 8931, 9015, 9099, 9184, 9269, 9354, 9440, 16 8191, 8272, 8353, 8434, 8516, 8598, 8681, 8764, 8847, 8931, 9015, 9099, 9184, 9269, 9354, 9440,
diff --git a/examples/nrf/src/bin/pwm_double_sequence.rs b/examples/nrf/src/bin/pwm_double_sequence.rs
index 85938f32c..6fc429214 100644
--- a/examples/nrf/src/bin/pwm_double_sequence.rs
+++ b/examples/nrf/src/bin/pwm_double_sequence.rs
@@ -2,8 +2,6 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use defmt::*; 5use defmt::*;
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
@@ -13,6 +11,9 @@ use embassy_nrf::pwm::{
13}; 11};
14use embassy_nrf::Peripherals; 12use embassy_nrf::Peripherals;
15 13
14use defmt_rtt as _; // global logger
15use panic_probe as _;
16
16#[embassy::main] 17#[embassy::main]
17async fn main(_spawner: Spawner, p: Peripherals) { 18async fn main(_spawner: Spawner, p: Peripherals) {
18 let seq_words_0: [u16; 5] = [1000, 250, 100, 50, 0]; 19 let seq_words_0: [u16; 5] = [1000, 250, 100, 50, 0];
diff --git a/examples/nrf/src/bin/pwm_sequence.rs b/examples/nrf/src/bin/pwm_sequence.rs
index f42958145..3b2919ba5 100644
--- a/examples/nrf/src/bin/pwm_sequence.rs
+++ b/examples/nrf/src/bin/pwm_sequence.rs
@@ -2,8 +2,6 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use defmt::*; 5use defmt::*;
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
@@ -12,6 +10,9 @@ use embassy_nrf::pwm::{
12}; 10};
13use embassy_nrf::Peripherals; 11use embassy_nrf::Peripherals;
14 12
13use defmt_rtt as _; // global logger
14use panic_probe as _;
15
15#[embassy::main] 16#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 17async fn main(_spawner: Spawner, p: Peripherals) {
17 let seq_words: [u16; 5] = [1000, 250, 100, 50, 0]; 18 let seq_words: [u16; 5] = [1000, 250, 100, 50, 0];
diff --git a/examples/nrf/src/bin/pwm_sequence_ppi.rs b/examples/nrf/src/bin/pwm_sequence_ppi.rs
index 66717c592..1f3662c60 100644
--- a/examples/nrf/src/bin/pwm_sequence_ppi.rs
+++ b/examples/nrf/src/bin/pwm_sequence_ppi.rs
@@ -3,8 +3,6 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4#![feature(array_from_fn)] 4#![feature(array_from_fn)]
5 5
6#[path = "../example_common.rs"]
7mod example_common;
8use core::future::pending; 6use core::future::pending;
9use defmt::*; 7use defmt::*;
10use embassy::executor::Spawner; 8use embassy::executor::Spawner;
@@ -16,6 +14,9 @@ use embassy_nrf::pwm::{
16}; 14};
17use embassy_nrf::Peripherals; 15use embassy_nrf::Peripherals;
18 16
17use defmt_rtt as _; // global logger
18use panic_probe as _;
19
19#[embassy::main] 20#[embassy::main]
20async fn main(_spawner: Spawner, p: Peripherals) { 21async fn main(_spawner: Spawner, p: Peripherals) {
21 let seq_words: [u16; 5] = [1000, 250, 100, 50, 0]; 22 let seq_words: [u16; 5] = [1000, 250, 100, 50, 0];
diff --git a/examples/nrf/src/bin/pwm_sequence_ws2812b.rs b/examples/nrf/src/bin/pwm_sequence_ws2812b.rs
index e5af7b462..8bfe1d50f 100644
--- a/examples/nrf/src/bin/pwm_sequence_ws2812b.rs
+++ b/examples/nrf/src/bin/pwm_sequence_ws2812b.rs
@@ -2,8 +2,6 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use defmt::*; 5use defmt::*;
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
@@ -13,6 +11,9 @@ use embassy_nrf::pwm::{
13}; 11};
14use embassy_nrf::Peripherals; 12use embassy_nrf::Peripherals;
15 13
14use defmt_rtt as _; // global logger
15use panic_probe as _;
16
16// WS2812B LED light demonstration. Drives just one light. 17// WS2812B LED light demonstration. Drives just one light.
17// The following reference on WS2812B may be of use: 18// The following reference on WS2812B may be of use:
18// https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf. 19// https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf.
diff --git a/examples/nrf/src/bin/pwm_servo.rs b/examples/nrf/src/bin/pwm_servo.rs
index c2ab0e7d1..40863bf3c 100644
--- a/examples/nrf/src/bin/pwm_servo.rs
+++ b/examples/nrf/src/bin/pwm_servo.rs
@@ -2,14 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use defmt::*; 5use defmt::*;
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
10use embassy_nrf::pwm::{Prescaler, SimplePwm}; 8use embassy_nrf::pwm::{Prescaler, SimplePwm};
11use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
12 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13
13#[embassy::main] 14#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
15 let mut pwm = SimplePwm::new_1ch(p.PWM0, p.P0_05); 16 let mut pwm = SimplePwm::new_1ch(p.PWM0, p.P0_05);
diff --git a/examples/nrf/src/bin/qspi.rs b/examples/nrf/src/bin/qspi.rs
index b2e6bfc15..ba60716c8 100644
--- a/examples/nrf/src/bin/qspi.rs
+++ b/examples/nrf/src/bin/qspi.rs
@@ -2,14 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::{assert_eq, info, unwrap};
6mod example_common;
7
8use defmt::assert_eq;
9use embassy::executor::Spawner; 6use embassy::executor::Spawner;
10use embassy_nrf::Peripherals; 7use embassy_nrf::Peripherals;
11use embassy_nrf::{interrupt, qspi}; 8use embassy_nrf::{interrupt, qspi};
12use example_common::*; 9
10use defmt_rtt as _; // global logger
11use panic_probe as _;
13 12
14const PAGE_SIZE: usize = 4096; 13const PAGE_SIZE: usize = 4096;
15 14
diff --git a/examples/nrf/src/bin/qspi_lowpower.rs b/examples/nrf/src/bin/qspi_lowpower.rs
index 4e264ef2f..a8184cd63 100644
--- a/examples/nrf/src/bin/qspi_lowpower.rs
+++ b/examples/nrf/src/bin/qspi_lowpower.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use core::mem; 5use core::mem;
6use defmt::{info, unwrap};
9use embassy::executor::Spawner; 7use embassy::executor::Spawner;
10use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
11use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
12use embassy_nrf::{interrupt, qspi}; 10use embassy_nrf::{interrupt, qspi};
13use example_common::*; 11
12use defmt_rtt as _; // global logger
13use panic_probe as _;
14 14
15// Workaround for alignment requirements. 15// Workaround for alignment requirements.
16// Nicer API will probably come in the future. 16// Nicer API will probably come in the future.
diff --git a/examples/nrf/src/bin/raw_spawn.rs b/examples/nrf/src/bin/raw_spawn.rs
index d0bd68674..1d9d3ed51 100644
--- a/examples/nrf/src/bin/raw_spawn.rs
+++ b/examples/nrf/src/bin/raw_spawn.rs
@@ -1,18 +1,17 @@
1#![no_std] 1#![no_std]
2#![no_main] 2#![no_main]
3 3
4#[path = "../example_common.rs"]
5mod example_common;
6use example_common::*;
7
8use core::mem; 4use core::mem;
9use cortex_m_rt::entry; 5use cortex_m_rt::entry;
10 6use defmt::{info, unwrap};
11use embassy::executor::raw::TaskStorage; 7use embassy::executor::raw::TaskStorage;
12use embassy::executor::Executor; 8use embassy::executor::Executor;
13use embassy::time::{Duration, Timer}; 9use embassy::time::{Duration, Timer};
14use embassy::util::Forever; 10use embassy::util::Forever;
15 11
12use defmt_rtt as _; // global logger
13use panic_probe as _;
14
16async fn run1() { 15async fn run1() {
17 loop { 16 loop {
18 info!("BIG INFREQUENT TICK"); 17 info!("BIG INFREQUENT TICK");
diff --git a/examples/nrf/src/bin/rng.rs b/examples/nrf/src/bin/rng.rs
index a35a9fa85..4b4b3a19b 100644
--- a/examples/nrf/src/bin/rng.rs
+++ b/examples/nrf/src/bin/rng.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner; 5use embassy::executor::Spawner;
9use embassy_nrf::interrupt; 6use embassy_nrf::interrupt;
10use embassy_nrf::rng::Rng; 7use embassy_nrf::rng::Rng;
11use embassy_nrf::Peripherals; 8use embassy_nrf::Peripherals;
12use rand::Rng as _; 9use rand::Rng as _;
13 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
16 let mut rng = Rng::new(p.RNG, interrupt::take!(RNG)); 16 let mut rng = Rng::new(p.RNG, interrupt::take!(RNG));
diff --git a/examples/nrf/src/bin/saadc.rs b/examples/nrf/src/bin/saadc.rs
index bc6b2b52c..5835be31f 100644
--- a/examples/nrf/src/bin/saadc.rs
+++ b/examples/nrf/src/bin/saadc.rs
@@ -2,13 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::info;
6mod example_common;
7use embassy::executor::Spawner; 6use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
9use embassy_nrf::saadc::{ChannelConfig, Config, Saadc}; 8use embassy_nrf::saadc::{ChannelConfig, Config, Saadc};
10use embassy_nrf::{interrupt, Peripherals}; 9use embassy_nrf::{interrupt, Peripherals};
11use example_common::*; 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
12 13
13#[embassy::main] 14#[embassy::main]
14async fn main(_spawner: Spawner, mut p: Peripherals) { 15async fn main(_spawner: Spawner, mut p: Peripherals) {
diff --git a/examples/nrf/src/bin/saadc_continuous.rs b/examples/nrf/src/bin/saadc_continuous.rs
index bdf552fba..5e357f79b 100644
--- a/examples/nrf/src/bin/saadc_continuous.rs
+++ b/examples/nrf/src/bin/saadc_continuous.rs
@@ -2,14 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::info;
6mod example_common;
7use embassy::executor::Spawner; 6use embassy::executor::Spawner;
8use embassy::time::Duration; 7use embassy::time::Duration;
9use embassy_nrf::saadc::{ChannelConfig, Config, Saadc, SamplerState}; 8use embassy_nrf::saadc::{ChannelConfig, Config, Saadc, SamplerState};
10use embassy_nrf::timer::Frequency; 9use embassy_nrf::timer::Frequency;
11use embassy_nrf::{interrupt, Peripherals}; 10use embassy_nrf::{interrupt, Peripherals};
12use example_common::*; 11
12use defmt_rtt as _; // global logger
13use panic_probe as _;
13 14
14// Demonstrates both continuous sampling and scanning multiple channels driven by a PPI linked timer 15// Demonstrates both continuous sampling and scanning multiple channels driven by a PPI linked timer
15 16
diff --git a/examples/nrf/src/bin/spim.rs b/examples/nrf/src/bin/spim.rs
index cda3baa26..f2a4ab388 100644
--- a/examples/nrf/src/bin/spim.rs
+++ b/examples/nrf/src/bin/spim.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::{info, unwrap};
6mod example_common;
7
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy_nrf::gpio::{Level, Output, OutputDrive}; 7use embassy_nrf::gpio::{Level, Output, OutputDrive};
10use embassy_nrf::Peripherals; 8use embassy_nrf::Peripherals;
11use embassy_nrf::{interrupt, spim}; 9use embassy_nrf::{interrupt, spim};
12use example_common::*; 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/nrf/src/bin/temp.rs b/examples/nrf/src/bin/temp.rs
index 4b30b6ea3..aa807910f 100644
--- a/examples/nrf/src/bin/temp.rs
+++ b/examples/nrf/src/bin/temp.rs
@@ -2,16 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::info;
6mod example_common; 6use embassy::executor::Spawner;
7use example_common::*; 7use embassy::time::{Duration, Timer};
8
9use embassy::{
10 executor::Spawner,
11 time::{Duration, Timer},
12};
13use embassy_nrf::{interrupt, temp::Temp, Peripherals}; 8use embassy_nrf::{interrupt, temp::Temp, Peripherals};
14 9
10use defmt_rtt as _; // global logger
11use panic_probe as _;
12
15#[embassy::main] 13#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
17 let irq = interrupt::take!(TEMP); 15 let irq = interrupt::take!(TEMP);
diff --git a/examples/nrf/src/bin/timer.rs b/examples/nrf/src/bin/timer.rs
index f27081b74..ff8ee9a86 100644
--- a/examples/nrf/src/bin/timer.rs
+++ b/examples/nrf/src/bin/timer.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::{info, unwrap};
6mod example_common;
7use embassy_nrf::Peripherals;
8use example_common::*;
9
10use embassy::executor::Spawner; 6use embassy::executor::Spawner;
11use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
8use embassy_nrf::Peripherals;
9
10use defmt_rtt as _; // global logger
11use panic_probe as _;
12 12
13#[embassy::task] 13#[embassy::task]
14async fn run1() { 14async fn run1() {
diff --git a/examples/nrf/src/bin/twim.rs b/examples/nrf/src/bin/twim.rs
index 1ac3a3945..08c614157 100644
--- a/examples/nrf/src/bin/twim.rs
+++ b/examples/nrf/src/bin/twim.rs
@@ -6,14 +6,14 @@
6#![no_main] 6#![no_main]
7#![feature(type_alias_impl_trait)] 7#![feature(type_alias_impl_trait)]
8 8
9#[path = "../example_common.rs"]
10mod example_common;
11
12use defmt::*; 9use defmt::*;
13use embassy::executor::Spawner; 10use embassy::executor::Spawner;
14use embassy_nrf::twim::{self, Twim}; 11use embassy_nrf::twim::{self, Twim};
15use embassy_nrf::{interrupt, Peripherals}; 12use embassy_nrf::{interrupt, Peripherals};
16 13
14use defmt_rtt as _; // global logger
15use panic_probe as _;
16
17const ADDRESS: u8 = 0x50; 17const ADDRESS: u8 = 0x50;
18 18
19#[embassy::main] 19#[embassy::main]
diff --git a/examples/nrf/src/bin/twim_lowpower.rs b/examples/nrf/src/bin/twim_lowpower.rs
index 4a0596437..45b347ea0 100644
--- a/examples/nrf/src/bin/twim_lowpower.rs
+++ b/examples/nrf/src/bin/twim_lowpower.rs
@@ -8,17 +8,16 @@
8#![no_main] 8#![no_main]
9#![feature(type_alias_impl_trait)] 9#![feature(type_alias_impl_trait)]
10 10
11#[path = "../example_common.rs"]
12mod example_common;
13
14use core::mem; 11use core::mem;
15
16use defmt::*; 12use defmt::*;
17use embassy::executor::Spawner; 13use embassy::executor::Spawner;
18use embassy::time::{Duration, Timer}; 14use embassy::time::{Duration, Timer};
19use embassy_nrf::twim::{self, Twim}; 15use embassy_nrf::twim::{self, Twim};
20use embassy_nrf::{interrupt, Peripherals}; 16use embassy_nrf::{interrupt, Peripherals};
21 17
18use defmt_rtt as _; // global logger
19use panic_probe as _;
20
22const ADDRESS: u8 = 0x50; 21const ADDRESS: u8 = 0x50;
23 22
24#[embassy::main] 23#[embassy::main]
diff --git a/examples/nrf/src/bin/uart.rs b/examples/nrf/src/bin/uart.rs
index 5dc89df66..91f7f4fdd 100644
--- a/examples/nrf/src/bin/uart.rs
+++ b/examples/nrf/src/bin/uart.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7use example_common::*;
8
9use embassy::executor::Spawner; 6use embassy::executor::Spawner;
10use embassy_nrf::{interrupt, uarte, Peripherals}; 7use embassy_nrf::{interrupt, uarte, Peripherals};
11 8
9use defmt_rtt as _; // global logger
10use panic_probe as _;
11
12#[embassy::main] 12#[embassy::main]
13async fn main(_spawner: Spawner, p: Peripherals) { 13async fn main(_spawner: Spawner, p: Peripherals) {
14 let mut config = uarte::Config::default(); 14 let mut config = uarte::Config::default();
diff --git a/examples/nrf/src/bin/uart_idle.rs b/examples/nrf/src/bin/uart_idle.rs
index 88dc185af..89336faaf 100644
--- a/examples/nrf/src/bin/uart_idle.rs
+++ b/examples/nrf/src/bin/uart_idle.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7use example_common::*;
8
9use embassy::executor::Spawner; 6use embassy::executor::Spawner;
10use embassy_nrf::{interrupt, uarte, Peripherals}; 7use embassy_nrf::{interrupt, uarte, Peripherals};
11 8
9use defmt_rtt as _; // global logger
10use panic_probe as _;
11
12#[embassy::main] 12#[embassy::main]
13async fn main(_spawner: Spawner, p: Peripherals) { 13async fn main(_spawner: Spawner, p: Peripherals) {
14 let mut config = uarte::Config::default(); 14 let mut config = uarte::Config::default();
diff --git a/examples/nrf/src/bin/uart_split.rs b/examples/nrf/src/bin/uart_split.rs
index 19d438c40..909429b1a 100644
--- a/examples/nrf/src/bin/uart_split.rs
+++ b/examples/nrf/src/bin/uart_split.rs
@@ -2,10 +2,7 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7use example_common::*;
8
9use embassy::blocking_mutex::raw::NoopRawMutex; 6use embassy::blocking_mutex::raw::NoopRawMutex;
10use embassy::channel::mpsc::{self, Channel, Sender}; 7use embassy::channel::mpsc::{self, Channel, Sender};
11use embassy::executor::Spawner; 8use embassy::executor::Spawner;
@@ -14,6 +11,9 @@ use embassy_nrf::peripherals::UARTE0;
14use embassy_nrf::uarte::UarteRx; 11use embassy_nrf::uarte::UarteRx;
15use embassy_nrf::{interrupt, uarte, Peripherals}; 12use embassy_nrf::{interrupt, uarte, Peripherals};
16 13
14use defmt_rtt as _; // global logger
15use panic_probe as _;
16
17static CHANNEL: Forever<Channel<NoopRawMutex, [u8; 8], 1>> = Forever::new(); 17static CHANNEL: Forever<Channel<NoopRawMutex, [u8; 8], 1>> = Forever::new();
18 18
19#[embassy::main] 19#[embassy::main]
diff --git a/examples/nrf/src/bin/usb_uart.rs b/examples/nrf/src/bin/usb_uart.rs
index c345df9e3..d283dccd1 100644
--- a/examples/nrf/src/bin/usb_uart.rs
+++ b/examples/nrf/src/bin/usb_uart.rs
@@ -2,21 +2,18 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use defmt::{info, unwrap}; 5use defmt::{info, unwrap};
9use defmt_rtt as _; // global logger
10use embassy::interrupt::InterruptExt;
11use futures::pin_mut;
12use panic_probe as _; // print out panic messages
13
14use embassy::executor::Spawner; 6use embassy::executor::Spawner;
7use embassy::interrupt::InterruptExt;
15use embassy::io::{AsyncBufReadExt, AsyncWriteExt}; 8use embassy::io::{AsyncBufReadExt, AsyncWriteExt};
16use embassy_nrf::usb::{State, Usb, UsbBus, UsbSerial}; 9use embassy_nrf::usb::{State, Usb, UsbBus, UsbSerial};
17use embassy_nrf::{interrupt, Peripherals}; 10use embassy_nrf::{interrupt, Peripherals};
11use futures::pin_mut;
18use usb_device::device::{UsbDeviceBuilder, UsbVidPid}; 12use usb_device::device::{UsbDeviceBuilder, UsbVidPid};
19 13
14use defmt_rtt as _; // global logger
15use panic_probe as _; // print out panic messages
16
20#[embassy::main] 17#[embassy::main]
21async fn main(_spawner: Spawner, p: Peripherals) { 18async fn main(_spawner: Spawner, p: Peripherals) {
22 let mut rx_buffer = [0u8; 64]; 19 let mut rx_buffer = [0u8; 64];
diff --git a/examples/nrf/src/bin/usb_uart_io.rs b/examples/nrf/src/bin/usb_uart_io.rs
index 8fc615262..ef2629844 100644
--- a/examples/nrf/src/bin/usb_uart_io.rs
+++ b/examples/nrf/src/bin/usb_uart_io.rs
@@ -2,13 +2,7 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use defmt::{info, unwrap}; 5use defmt::{info, unwrap};
9use defmt_rtt as _; // global logger
10use panic_probe as _; // print out panic messages
11
12use embassy::executor::Spawner; 6use embassy::executor::Spawner;
13use embassy::interrupt::InterruptExt; 7use embassy::interrupt::InterruptExt;
14use embassy::io::{read_line, AsyncWriteExt}; 8use embassy::io::{read_line, AsyncWriteExt};
@@ -17,6 +11,9 @@ use embassy_nrf::{interrupt, Peripherals};
17use futures::pin_mut; 11use futures::pin_mut;
18use usb_device::device::{UsbDeviceBuilder, UsbVidPid}; 12use usb_device::device::{UsbDeviceBuilder, UsbVidPid};
19 13
14use defmt_rtt as _; // global logger
15use panic_probe as _; // print out panic messages
16
20#[embassy::main] 17#[embassy::main]
21async fn main(_spawner: Spawner, p: Peripherals) { 18async fn main(_spawner: Spawner, p: Peripherals) {
22 let mut rx_buffer = [0u8; 64]; 19 let mut rx_buffer = [0u8; 64];
diff --git a/examples/nrf/src/bin/wdt.rs b/examples/nrf/src/bin/wdt.rs
index cc199be9d..431ccca8b 100644
--- a/examples/nrf/src/bin/wdt.rs
+++ b/examples/nrf/src/bin/wdt.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use defmt::*; 5use defmt::*;
9use embassy::executor::Spawner; 6use embassy::executor::Spawner;
10use embassy_nrf::gpio::{Input, Pull}; 7use embassy_nrf::gpio::{Input, Pull};
11use embassy_nrf::wdt::{Config, Watchdog}; 8use embassy_nrf::wdt::{Config, Watchdog};
12use embassy_nrf::Peripherals; 9use embassy_nrf::Peripherals;
13 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
16 info!("Hello World!"); 16 info!("Hello World!");
diff --git a/examples/nrf/src/example_common.rs b/examples/nrf/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/nrf/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/rp/Cargo.toml b/examples/rp/Cargo.toml
index 830e54174..2cce0af37 100644
--- a/examples/rp/Cargo.toml
+++ b/examples/rp/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6 6
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-rp = { version = "0.1.0", path = "../../embassy-rp", features = ["defmt", "unstable-traits", "nightly", "unstable-pac"] } 10embassy-rp = { version = "0.1.0", path = "../../embassy-rp", features = ["defmt", "unstable-traits", "nightly", "unstable-pac"] }
11atomic-polyfill = "0.1.5" 11atomic-polyfill = "0.1.5"
12 12
diff --git a/examples/rp/src/bin/blinky.rs b/examples/rp/src/bin/blinky.rs
index 96e45f697..6f199d07e 100644
--- a/examples/rp/src/bin/blinky.rs
+++ b/examples/rp/src/bin/blinky.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use defmt::*; 5use defmt::*;
9use embassy::executor::Spawner; 6use embassy::executor::Spawner;
10use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
11use embassy_rp::{gpio, Peripherals}; 8use embassy_rp::{gpio, Peripherals};
12use gpio::{Level, Output}; 9use gpio::{Level, Output};
13 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
16 let mut led = Output::new(p.PIN_25, Level::Low); 16 let mut led = Output::new(p.PIN_25, Level::Low);
diff --git a/examples/rp/src/bin/button.rs b/examples/rp/src/bin/button.rs
index 6492367e5..2418ad012 100644
--- a/examples/rp/src/bin/button.rs
+++ b/examples/rp/src/bin/button.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner; 5use embassy::executor::Spawner;
9use embassy_rp::gpio::{Input, Level, Output, Pull}; 6use embassy_rp::gpio::{Input, Level, Output, Pull};
10use embassy_rp::Peripherals; 7use embassy_rp::Peripherals;
11 8
9use defmt_rtt as _; // global logger
10use panic_probe as _;
11
12#[embassy::main] 12#[embassy::main]
13async fn main(_spawner: Spawner, p: Peripherals) { 13async fn main(_spawner: Spawner, p: Peripherals) {
14 let button = Input::new(p.PIN_28, Pull::Up); 14 let button = Input::new(p.PIN_28, Pull::Up);
diff --git a/examples/rp/src/bin/spi.rs b/examples/rp/src/bin/spi.rs
index 3348dc999..b38424363 100644
--- a/examples/rp/src/bin/spi.rs
+++ b/examples/rp/src/bin/spi.rs
@@ -2,9 +2,6 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use defmt::*; 5use defmt::*;
9use embassy::executor::Spawner; 6use embassy::executor::Spawner;
10use embassy_rp::spi; 7use embassy_rp::spi;
@@ -12,6 +9,9 @@ use embassy_rp::spi::Spi;
12use embassy_rp::{gpio, Peripherals}; 9use embassy_rp::{gpio, Peripherals};
13use gpio::{Level, Output}; 10use gpio::{Level, Output};
14 11
12use defmt_rtt as _; // global logger
13use panic_probe as _;
14
15#[embassy::main] 15#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 16async fn main(_spawner: Spawner, p: Peripherals) {
17 info!("Hello World!"); 17 info!("Hello World!");
diff --git a/examples/rp/src/bin/spi_display.rs b/examples/rp/src/bin/spi_display.rs
index b2854afcb..bc93e0617 100644
--- a/examples/rp/src/bin/spi_display.rs
+++ b/examples/rp/src/bin/spi_display.rs
@@ -2,11 +2,7 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use core::cell::RefCell; 5use core::cell::RefCell;
9
10use defmt::*; 6use defmt::*;
11use embassy::executor::Spawner; 7use embassy::executor::Spawner;
12use embassy::time::Delay; 8use embassy::time::Delay;
@@ -27,6 +23,9 @@ use crate::my_display_interface::SPIDeviceInterface;
27use crate::shared_spi::SpiDeviceWithCs; 23use crate::shared_spi::SpiDeviceWithCs;
28use crate::touch::Touch; 24use crate::touch::Touch;
29 25
26use defmt_rtt as _; // global logger
27use panic_probe as _;
28
30//const DISPLAY_FREQ: u32 = 64_000_000; 29//const DISPLAY_FREQ: u32 = 64_000_000;
31const TOUCH_FREQ: u32 = 200_000; 30const TOUCH_FREQ: u32 = 200_000;
32 31
diff --git a/examples/rp/src/bin/uart.rs b/examples/rp/src/bin/uart.rs
index 8354f9f82..bc941dd8b 100644
--- a/examples/rp/src/bin/uart.rs
+++ b/examples/rp/src/bin/uart.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner; 5use embassy::executor::Spawner;
9use embassy_rp::{uart, Peripherals}; 6use embassy_rp::{uart, Peripherals};
10 7
8use defmt_rtt as _; // global logger
9use panic_probe as _;
10
11#[embassy::main] 11#[embassy::main]
12async fn main(_spawner: Spawner, p: Peripherals) { 12async fn main(_spawner: Spawner, p: Peripherals) {
13 let config = uart::Config::default(); 13 let config = uart::Config::default();
diff --git a/examples/rp/src/example_common.rs b/examples/rp/src/example_common.rs
deleted file mode 100644
index f7c4ef57a..000000000
--- a/examples/rp/src/example_common.rs
+++ /dev/null
@@ -1,12 +0,0 @@
1use core::sync::atomic::{AtomicUsize, Ordering};
2use defmt_rtt as _;
3use panic_probe as _;
4
5defmt::timestamp! {"{=u64}", {
6 static COUNT: AtomicUsize = AtomicUsize::new(0);
7 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
8 let n = COUNT.load(Ordering::Relaxed);
9 COUNT.store(n + 1, Ordering::Relaxed);
10 n as u64
11}
12}
diff --git a/examples/stm32f0/Cargo.toml b/examples/stm32f0/Cargo.toml
index 0f76dabf0..c973c1f7c 100644
--- a/examples/stm32f0/Cargo.toml
+++ b/examples/stm32f0/Cargo.toml
@@ -13,6 +13,6 @@ cortex-m-rt = "0.7.0"
13defmt = "0.3" 13defmt = "0.3"
14defmt-rtt = "0.3" 14defmt-rtt = "0.3"
15panic-probe = "0.3" 15panic-probe = "0.3"
16embassy = { path = "../../embassy", features = ["defmt"] } 16embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
17embassy-stm32 = { path = "../../embassy-stm32", features = ["nightly", "defmt", "memory-x", "stm32f030f4", "time-driver-any"] } 17embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "memory-x", "stm32f030f4", "time-driver-any"] }
18 18
diff --git a/examples/stm32f0/src/bin/hello.rs b/examples/stm32f0/src/bin/hello.rs
index 9f745f9ae..975e94f34 100644
--- a/examples/stm32f0/src/bin/hello.rs
+++ b/examples/stm32f0/src/bin/hello.rs
@@ -3,13 +3,12 @@
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5use defmt::info; 5use defmt::info;
6
7use embassy::executor::Spawner; 6use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
9use embassy_stm32::Peripherals; 8use embassy_stm32::Peripherals;
10 9
11#[path = "../example_common.rs"] 10use defmt_rtt as _; // global logger
12mod example_common; 11use panic_probe as _;
13 12
14#[embassy::main] 13#[embassy::main]
15async fn main(_spawner: Spawner, _p: Peripherals) -> ! { 14async fn main(_spawner: Spawner, _p: Peripherals) -> ! {
diff --git a/examples/stm32f0/src/example_common.rs b/examples/stm32f0/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32f0/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32f1/Cargo.toml b/examples/stm32f1/Cargo.toml
index 79be4b51c..5e5faf1f6 100644
--- a/examples/stm32f1/Cargo.toml
+++ b/examples/stm32f1/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f103c8", "unstable-pac", "memory-x", "time-driver-any"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f103c8", "unstable-pac", "memory-x", "time-driver-any"] }
11 11
12defmt = "0.3" 12defmt = "0.3"
diff --git a/examples/stm32f1/src/bin/adc.rs b/examples/stm32f1/src/bin/adc.rs
index d24f3f5cb..af403423d 100644
--- a/examples/stm32f1/src/bin/adc.rs
+++ b/examples/stm32f1/src/bin/adc.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Delay, Duration, Timer}; 7use embassy::time::{Delay, Duration, Timer};
10use embassy_stm32::adc::Adc; 8use embassy_stm32::adc::Adc;
11use embassy_stm32::Peripherals; 9use embassy_stm32::Peripherals;
12use example_common::*; 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f1/src/bin/blinky.rs b/examples/stm32f1/src/bin/blinky.rs
index 0d9537453..657bcdd1d 100644
--- a/examples/stm32f1/src/bin/blinky.rs
+++ b/examples/stm32f1/src/bin/blinky.rs
@@ -2,13 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7use embassy::executor::Spawner; 6use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 8use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 9use embassy_stm32::Peripherals;
11use example_common::*; 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
12 13
13#[embassy::main] 14#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f1/src/bin/hello.rs b/examples/stm32f1/src/bin/hello.rs
index efcb9a244..8054a8993 100644
--- a/examples/stm32f1/src/bin/hello.rs
+++ b/examples/stm32f1/src/bin/hello.rs
@@ -9,8 +9,8 @@ use embassy_stm32::time::Hertz;
9use embassy_stm32::Config; 9use embassy_stm32::Config;
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11 11
12#[path = "../example_common.rs"] 12use defmt_rtt as _; // global logger
13mod example_common; 13use panic_probe as _;
14 14
15fn config() -> Config { 15fn config() -> Config {
16 let mut config = Config::default(); 16 let mut config = Config::default();
diff --git a/examples/stm32f1/src/example_common.rs b/examples/stm32f1/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32f1/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32f2/Cargo.toml b/examples/stm32f2/Cargo.toml
index ee1d7ce2b..4eef3a6fe 100644
--- a/examples/stm32f2/Cargo.toml
+++ b/examples/stm32f2/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f207zg", "unstable-pac", "memory-x", "time-driver-any", "exti"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f207zg", "unstable-pac", "memory-x", "time-driver-any", "exti"] }
11 11
12defmt = "0.3" 12defmt = "0.3"
diff --git a/examples/stm32f2/src/bin/blinky.rs b/examples/stm32f2/src/bin/blinky.rs
index 637c2f4fd..395f4df51 100644
--- a/examples/stm32f2/src/bin/blinky.rs
+++ b/examples/stm32f2/src/bin/blinky.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
10use embassy_stm32::gpio::{Level, Output, Speed}; 8use embassy_stm32::gpio::{Level, Output, Speed};
11use embassy_stm32::Peripherals; 9use embassy_stm32::Peripherals;
12use example_common::*; 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f2/src/example_common.rs b/examples/stm32f2/src/example_common.rs
deleted file mode 100644
index e14517033..000000000
--- a/examples/stm32f2/src/example_common.rs
+++ /dev/null
@@ -1,19 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {
11 "{=u64}",
12 {
13 static COUNT: AtomicUsize = AtomicUsize::new(0);
14 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
15 let n = COUNT.load(Ordering::Relaxed);
16 COUNT.store(n + 1, Ordering::Relaxed);
17 n as u64
18 }
19}
diff --git a/examples/stm32f3/Cargo.toml b/examples/stm32f3/Cargo.toml
index 3ce2bc8a2..37f99fea2 100644
--- a/examples/stm32f3/Cargo.toml
+++ b/examples/stm32f3/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f303vc", "unstable-pac", "memory-x", "time-driver-any", "exti"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f303vc", "unstable-pac", "memory-x", "time-driver-any", "exti"] }
11 11
12defmt = "0.3" 12defmt = "0.3"
diff --git a/examples/stm32f3/src/bin/blinky.rs b/examples/stm32f3/src/bin/blinky.rs
index e8b8dc23f..b3643a26f 100644
--- a/examples/stm32f3/src/bin/blinky.rs
+++ b/examples/stm32f3/src/bin/blinky.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common;
7
8use embassy::executor::Spawner; 6use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 7use embassy::time::{Duration, Timer};
10use embassy_stm32::gpio::{Level, Output, Speed}; 8use embassy_stm32::gpio::{Level, Output, Speed};
11use embassy_stm32::Peripherals; 9use embassy_stm32::Peripherals;
12use example_common::*; 10
11use defmt_rtt as _; // global logger
12use panic_probe as _;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f3/src/bin/button.rs b/examples/stm32f3/src/bin/button.rs
index 131d4af42..207381bdd 100644
--- a/examples/stm32f3/src/bin/button.rs
+++ b/examples/stm32f3/src/bin/button.rs
@@ -2,11 +2,11 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use cortex_m_rt::entry; 5use cortex_m_rt::entry;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
9use example_common::*; 9use panic_probe as _;
10 10
11#[entry] 11#[entry]
12fn main() -> ! { 12fn main() -> ! {
diff --git a/examples/stm32f3/src/bin/button_events.rs b/examples/stm32f3/src/bin/button_events.rs
index 0bd7b342f..99aab3027 100644
--- a/examples/stm32f3/src/bin/button_events.rs
+++ b/examples/stm32f3/src/bin/button_events.rs
@@ -10,8 +10,7 @@
10#![no_main] 10#![no_main]
11#![feature(type_alias_impl_trait)] 11#![feature(type_alias_impl_trait)]
12 12
13#[path = "../example_common.rs"] 13use defmt::*;
14mod example_common;
15use embassy::blocking_mutex::raw::NoopRawMutex; 14use embassy::blocking_mutex::raw::NoopRawMutex;
16use embassy::channel::mpsc::{self, Channel, Receiver, Sender}; 15use embassy::channel::mpsc::{self, Channel, Receiver, Sender};
17use embassy::executor::Spawner; 16use embassy::executor::Spawner;
@@ -21,7 +20,9 @@ use embassy_stm32::exti::ExtiInput;
21use embassy_stm32::gpio::{AnyPin, Input, Level, Output, Pin, Pull, Speed}; 20use embassy_stm32::gpio::{AnyPin, Input, Level, Output, Pin, Pull, Speed};
22use embassy_stm32::peripherals::PA0; 21use embassy_stm32::peripherals::PA0;
23use embassy_stm32::Peripherals; 22use embassy_stm32::Peripherals;
24use example_common::*; 23
24use defmt_rtt as _; // global logger
25use panic_probe as _;
25 26
26struct Leds<'a> { 27struct Leds<'a> {
27 leds: [Output<'a, AnyPin>; 8], 28 leds: [Output<'a, AnyPin>; 8],
diff --git a/examples/stm32f3/src/bin/button_exti.rs b/examples/stm32f3/src/bin/button_exti.rs
index b11f38ea5..68d166367 100644
--- a/examples/stm32f3/src/bin/button_exti.rs
+++ b/examples/stm32f3/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f3/src/bin/hello.rs b/examples/stm32f3/src/bin/hello.rs
index 9a67419fb..a79d6838c 100644
--- a/examples/stm32f3/src/bin/hello.rs
+++ b/examples/stm32f3/src/bin/hello.rs
@@ -9,8 +9,8 @@ use embassy_stm32::time::Hertz;
9use embassy_stm32::Config; 9use embassy_stm32::Config;
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11 11
12#[path = "../example_common.rs"] 12use defmt_rtt as _; // global logger
13mod example_common; 13use panic_probe as _;
14 14
15fn config() -> Config { 15fn config() -> Config {
16 let mut config = Config::default(); 16 let mut config = Config::default();
diff --git a/examples/stm32f3/src/bin/multiprio.rs b/examples/stm32f3/src/bin/multiprio.rs
index 9d9754833..1c9401549 100644
--- a/examples/stm32f3/src/bin/multiprio.rs
+++ b/examples/stm32f3/src/bin/multiprio.rs
@@ -57,9 +57,9 @@
57#![no_main] 57#![no_main]
58#![feature(type_alias_impl_trait)] 58#![feature(type_alias_impl_trait)]
59 59
60#[path = "../example_common.rs"] 60use defmt::*;
61mod example_common; 61use defmt_rtt as _; // global logger
62use example_common::*; 62use panic_probe as _;
63 63
64use cortex_m_rt::entry; 64use cortex_m_rt::entry;
65use embassy::executor::{Executor, InterruptExecutor}; 65use embassy::executor::{Executor, InterruptExecutor};
diff --git a/examples/stm32f3/src/bin/spi_dma.rs b/examples/stm32f3/src/bin/spi_dma.rs
index bd66b1202..6d80c4087 100644
--- a/examples/stm32f3/src/bin/spi_dma.rs
+++ b/examples/stm32f3/src/bin/spi_dma.rs
@@ -2,16 +2,16 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::fmt::Write; 5use core::fmt::Write;
8use core::str::from_utf8; 6use core::str::from_utf8;
7use defmt::*;
8use defmt_rtt as _; // global logger
9use embassy::executor::Spawner; 9use embassy::executor::Spawner;
10use embassy_stm32::spi::{Config, Spi}; 10use embassy_stm32::spi::{Config, Spi};
11use embassy_stm32::time::Hertz; 11use embassy_stm32::time::Hertz;
12use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
13use example_common::*;
14use heapless::String; 13use heapless::String;
14use panic_probe as _;
15 15
16#[embassy::main] 16#[embassy::main]
17async fn main(_spawner: Spawner, p: Peripherals) { 17async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f3/src/bin/usart_dma.rs b/examples/stm32f3/src/bin/usart_dma.rs
index 0e67bb1f1..859749eb7 100644
--- a/examples/stm32f3/src/bin/usart_dma.rs
+++ b/examples/stm32f3/src/bin/usart_dma.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::fmt::Write; 5use core::fmt::Write;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy::executor::Spawner; 8use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 9use embassy_stm32::dma::NoDma;
10use embassy_stm32::usart::{Config, Uart}; 10use embassy_stm32::usart::{Config, Uart};
11use embassy_stm32::Peripherals; 11use embassy_stm32::Peripherals;
12use example_common::*;
13use heapless::String; 12use heapless::String;
13use panic_probe as _;
14 14
15#[embassy::main] 15#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 16async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f3/src/example_common.rs b/examples/stm32f3/src/example_common.rs
deleted file mode 100644
index e14517033..000000000
--- a/examples/stm32f3/src/example_common.rs
+++ /dev/null
@@ -1,19 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {
11 "{=u64}",
12 {
13 static COUNT: AtomicUsize = AtomicUsize::new(0);
14 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
15 let n = COUNT.load(Ordering::Relaxed);
16 COUNT.store(n + 1, Ordering::Relaxed);
17 n as u64
18 }
19}
diff --git a/examples/stm32f4/Cargo.toml b/examples/stm32f4/Cargo.toml
index c53f04e1c..1bc406495 100644
--- a/examples/stm32f4/Cargo.toml
+++ b/examples/stm32f4/Cargo.toml
@@ -7,7 +7,7 @@ resolver = "2"
7 7
8 8
9[dependencies] 9[dependencies]
10embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "unstable-traits"] } 10embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime", "unstable-traits"] }
11embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32f429zi", "unstable-pac", "memory-x", "time-driver-any", "exti", "usb-otg"] } 11embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32f429zi", "unstable-pac", "memory-x", "time-driver-any", "exti", "usb-otg"] }
12 12
13defmt = "0.3" 13defmt = "0.3"
diff --git a/examples/stm32f4/src/bin/adc.rs b/examples/stm32f4/src/bin/adc.rs
index 0a6ddbbca..f0b1ad232 100644
--- a/examples/stm32f4/src/bin/adc.rs
+++ b/examples/stm32f4/src/bin/adc.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy::time::{Delay, Duration, Timer}; 10use embassy::time::{Delay, Duration, Timer};
10use embassy_stm32::adc::Adc; 11use embassy_stm32::adc::Adc;
11use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
12use example_common::*;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f4/src/bin/blinky.rs b/examples/stm32f4/src/bin/blinky.rs
index 00d67dac0..8b85ca96d 100644
--- a/examples/stm32f4/src/bin/blinky.rs
+++ b/examples/stm32f4/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f4/src/bin/button.rs b/examples/stm32f4/src/bin/button.rs
index 24eef75b2..4f9af7fbd 100644
--- a/examples/stm32f4/src/bin/button.rs
+++ b/examples/stm32f4/src/bin/button.rs
@@ -2,11 +2,11 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use cortex_m_rt::entry; 5use cortex_m_rt::entry;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
9use example_common::*; 9use panic_probe as _;
10 10
11#[entry] 11#[entry]
12fn main() -> ! { 12fn main() -> ! {
diff --git a/examples/stm32f4/src/bin/button_exti.rs b/examples/stm32f4/src/bin/button_exti.rs
index 852fbe3c6..78f2e6ee2 100644
--- a/examples/stm32f4/src/bin/button_exti.rs
+++ b/examples/stm32f4/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f4/src/bin/can.rs b/examples/stm32f4/src/bin/can.rs
index b36e41805..0f41d6860 100644
--- a/examples/stm32f4/src/bin/can.rs
+++ b/examples/stm32f4/src/bin/can.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use cortex_m_rt::entry; 8use cortex_m_rt::entry;
9use defmt::*;
9use embassy_stm32::can::bxcan::filter::Mask32; 10use embassy_stm32::can::bxcan::filter::Mask32;
10use embassy_stm32::can::bxcan::{Frame, StandardId}; 11use embassy_stm32::can::bxcan::{Frame, StandardId};
11use embassy_stm32::can::Can; 12use embassy_stm32::can::Can;
12use embassy_stm32::gpio::{Input, Pull}; 13use embassy_stm32::gpio::{Input, Pull};
13use example_common::*;
14 14
15#[entry] 15#[entry]
16fn main() -> ! { 16fn main() -> ! {
diff --git a/examples/stm32f4/src/bin/hello.rs b/examples/stm32f4/src/bin/hello.rs
index 56eb67bf3..92d87cedf 100644
--- a/examples/stm32f4/src/bin/hello.rs
+++ b/examples/stm32f4/src/bin/hello.rs
@@ -9,8 +9,8 @@ use embassy_stm32::time::Hertz;
9use embassy_stm32::Config; 9use embassy_stm32::Config;
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11 11
12#[path = "../example_common.rs"] 12use defmt_rtt as _; // global logger
13mod example_common; 13use panic_probe as _;
14 14
15fn config() -> Config { 15fn config() -> Config {
16 let mut config = Config::default(); 16 let mut config = Config::default();
diff --git a/examples/stm32f4/src/bin/multiprio.rs b/examples/stm32f4/src/bin/multiprio.rs
index 9d9754833..1c9401549 100644
--- a/examples/stm32f4/src/bin/multiprio.rs
+++ b/examples/stm32f4/src/bin/multiprio.rs
@@ -57,9 +57,9 @@
57#![no_main] 57#![no_main]
58#![feature(type_alias_impl_trait)] 58#![feature(type_alias_impl_trait)]
59 59
60#[path = "../example_common.rs"] 60use defmt::*;
61mod example_common; 61use defmt_rtt as _; // global logger
62use example_common::*; 62use panic_probe as _;
63 63
64use cortex_m_rt::entry; 64use cortex_m_rt::entry;
65use embassy::executor::{Executor, InterruptExecutor}; 65use embassy::executor::{Executor, InterruptExecutor};
diff --git a/examples/stm32f4/src/bin/sdmmc.rs b/examples/stm32f4/src/bin/sdmmc.rs
index 2ef367397..eab0fad4a 100644
--- a/examples/stm32f4/src/bin/sdmmc.rs
+++ b/examples/stm32f4/src/bin/sdmmc.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::sdmmc::Sdmmc; 10use embassy_stm32::sdmmc::Sdmmc;
10use embassy_stm32::time::U32Ext; 11use embassy_stm32::time::U32Ext;
11use embassy_stm32::{interrupt, Config, Peripherals}; 12use embassy_stm32::{interrupt, Config, Peripherals};
12use example_common::*;
13 13
14fn config() -> Config { 14fn config() -> Config {
15 let mut config = Config::default(); 15 let mut config = Config::default();
diff --git a/examples/stm32f4/src/bin/spi.rs b/examples/stm32f4/src/bin/spi.rs
index 6b04f1fed..69be81432 100644
--- a/examples/stm32f4/src/bin/spi.rs
+++ b/examples/stm32f4/src/bin/spi.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use cortex_m_rt::entry; 8use cortex_m_rt::entry;
9use defmt::*;
9use embassy_stm32::dma::NoDma; 10use embassy_stm32::dma::NoDma;
10use embassy_stm32::gpio::{Level, Output, Speed}; 11use embassy_stm32::gpio::{Level, Output, Speed};
11use embassy_stm32::spi::{Config, Spi}; 12use embassy_stm32::spi::{Config, Spi};
12use embassy_stm32::time::Hertz; 13use embassy_stm32::time::Hertz;
13use example_common::*;
14 14
15#[entry] 15#[entry]
16fn main() -> ! { 16fn main() -> ! {
diff --git a/examples/stm32f4/src/bin/spi_dma.rs b/examples/stm32f4/src/bin/spi_dma.rs
index 9171f7516..1bf9b856d 100644
--- a/examples/stm32f4/src/bin/spi_dma.rs
+++ b/examples/stm32f4/src/bin/spi_dma.rs
@@ -2,16 +2,16 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::fmt::Write; 5use core::fmt::Write;
8use core::str::from_utf8; 6use core::str::from_utf8;
7use defmt::*;
8use defmt_rtt as _; // global logger
9use embassy::executor::Spawner; 9use embassy::executor::Spawner;
10use embassy_stm32::spi::{Config, Spi}; 10use embassy_stm32::spi::{Config, Spi};
11use embassy_stm32::time::Hertz; 11use embassy_stm32::time::Hertz;
12use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
13use example_common::*;
14use heapless::String; 13use heapless::String;
14use panic_probe as _;
15 15
16#[embassy::main] 16#[embassy::main]
17async fn main(_spawner: Spawner, p: Peripherals) { 17async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f4/src/bin/usart.rs b/examples/stm32f4/src/bin/usart.rs
index b5ea98cca..a302667e2 100644
--- a/examples/stm32f4/src/bin/usart.rs
+++ b/examples/stm32f4/src/bin/usart.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use cortex_m_rt::entry; 5use cortex_m_rt::entry;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy_stm32::dma::NoDma; 8use embassy_stm32::dma::NoDma;
9use embassy_stm32::usart::{Config, Uart}; 9use embassy_stm32::usart::{Config, Uart};
10use example_common::*; 10use panic_probe as _;
11 11
12#[entry] 12#[entry]
13fn main() -> ! { 13fn main() -> ! {
diff --git a/examples/stm32f4/src/bin/usart_dma.rs b/examples/stm32f4/src/bin/usart_dma.rs
index 862a91ea8..cf45b71c5 100644
--- a/examples/stm32f4/src/bin/usart_dma.rs
+++ b/examples/stm32f4/src/bin/usart_dma.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::fmt::Write; 5use core::fmt::Write;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy::executor::Spawner; 8use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 9use embassy_stm32::dma::NoDma;
10use embassy_stm32::usart::{Config, Uart}; 10use embassy_stm32::usart::{Config, Uart};
11use embassy_stm32::Peripherals; 11use embassy_stm32::Peripherals;
12use example_common::*;
13use heapless::String; 12use heapless::String;
13use panic_probe as _;
14 14
15#[embassy::main] 15#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 16async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f4/src/bin/usb_uart.rs b/examples/stm32f4/src/bin/usb_uart.rs
index 63059d51f..251ed1eb0 100644
--- a/examples/stm32f4/src/bin/usb_uart.rs
+++ b/examples/stm32f4/src/bin/usb_uart.rs
@@ -2,8 +2,8 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::{info, unwrap}; 8use defmt::{info, unwrap};
9use defmt_rtt as _; // global logger 9use defmt_rtt as _; // global logger
diff --git a/examples/stm32f4/src/bin/usb_uart_ulpi.rs b/examples/stm32f4/src/bin/usb_uart_ulpi.rs
index a55502728..f6c373602 100644
--- a/examples/stm32f4/src/bin/usb_uart_ulpi.rs
+++ b/examples/stm32f4/src/bin/usb_uart_ulpi.rs
@@ -2,8 +2,8 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::{info, unwrap}; 8use defmt::{info, unwrap};
9use defmt_rtt as _; // global logger 9use defmt_rtt as _; // global logger
diff --git a/examples/stm32f4/src/example_common.rs b/examples/stm32f4/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32f4/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32f7/Cargo.toml b/examples/stm32f7/Cargo.toml
index 3f6858340..3703f551f 100644
--- a/examples/stm32f7/Cargo.toml
+++ b/examples/stm32f7/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "net", "stm32f767zi", "unstable-pac", "time-driver-any", "exti"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "net", "stm32f767zi", "unstable-pac", "time-driver-any", "exti"] }
11embassy-net = { path = "../../embassy-net", default-features = false, features = ["defmt", "tcp", "medium-ethernet", "pool-16"] } 11embassy-net = { path = "../../embassy-net", default-features = false, features = ["defmt", "tcp", "medium-ethernet", "pool-16"] }
12 12
diff --git a/examples/stm32f7/src/bin/blinky.rs b/examples/stm32f7/src/bin/blinky.rs
index 00d67dac0..8b85ca96d 100644
--- a/examples/stm32f7/src/bin/blinky.rs
+++ b/examples/stm32f7/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f7/src/bin/button.rs b/examples/stm32f7/src/bin/button.rs
index 24eef75b2..4f9af7fbd 100644
--- a/examples/stm32f7/src/bin/button.rs
+++ b/examples/stm32f7/src/bin/button.rs
@@ -2,11 +2,11 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use cortex_m_rt::entry; 5use cortex_m_rt::entry;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
9use example_common::*; 9use panic_probe as _;
10 10
11#[entry] 11#[entry]
12fn main() -> ! { 12fn main() -> ! {
diff --git a/examples/stm32f7/src/bin/button_exti.rs b/examples/stm32f7/src/bin/button_exti.rs
index 852fbe3c6..78f2e6ee2 100644
--- a/examples/stm32f7/src/bin/button_exti.rs
+++ b/examples/stm32f7/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32f7/src/bin/eth.rs b/examples/stm32f7/src/bin/eth.rs
index 15169d2dc..446756c29 100644
--- a/examples/stm32f7/src/bin/eth.rs
+++ b/examples/stm32f7/src/bin/eth.rs
@@ -2,14 +2,8 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use embassy_stm32::peripherals::ETH;
8use example_common::config;
9
10use cortex_m_rt::entry; 5use cortex_m_rt::entry;
11use defmt::{info, unwrap}; 6use defmt::*;
12use defmt_rtt as _; // global logger
13use embassy::executor::{Executor, Spawner}; 7use embassy::executor::{Executor, Spawner};
14use embassy::io::AsyncWriteExt; 8use embassy::io::AsyncWriteExt;
15use embassy::time::{Duration, Timer}; 9use embassy::time::{Duration, Timer};
@@ -19,12 +13,16 @@ use embassy_net::{
19}; 13};
20use embassy_stm32::eth::lan8742a::LAN8742A; 14use embassy_stm32::eth::lan8742a::LAN8742A;
21use embassy_stm32::eth::{Ethernet, State}; 15use embassy_stm32::eth::{Ethernet, State};
16use embassy_stm32::interrupt;
17use embassy_stm32::peripherals::ETH;
18use embassy_stm32::peripherals::RNG;
22use embassy_stm32::rng::Rng; 19use embassy_stm32::rng::Rng;
23use embassy_stm32::{interrupt, peripherals}; 20use embassy_stm32::time::U32Ext;
21use embassy_stm32::Config;
24use heapless::Vec; 22use heapless::Vec;
25use panic_probe as _;
26 23
27use peripherals::RNG; 24use defmt_rtt as _; // global logger
25use panic_probe as _;
28 26
29#[embassy::task] 27#[embassy::task]
30async fn main_task( 28async fn main_task(
@@ -88,6 +86,12 @@ static ETH: Forever<Ethernet<'static, ETH, LAN8742A, 4, 4>> = Forever::new();
88static CONFIG: Forever<StaticConfigurator> = Forever::new(); 86static CONFIG: Forever<StaticConfigurator> = Forever::new();
89static NET_RESOURCES: Forever<StackResources<1, 2, 8>> = Forever::new(); 87static NET_RESOURCES: Forever<StackResources<1, 2, 8>> = Forever::new();
90 88
89fn config() -> Config {
90 let mut config = Config::default();
91 config.rcc.sys_ck = Some(200.mhz().into());
92 config
93}
94
91#[entry] 95#[entry]
92fn main() -> ! { 96fn main() -> ! {
93 info!("Hello World!"); 97 info!("Hello World!");
diff --git a/examples/stm32f7/src/bin/hello.rs b/examples/stm32f7/src/bin/hello.rs
index 56eb67bf3..92d87cedf 100644
--- a/examples/stm32f7/src/bin/hello.rs
+++ b/examples/stm32f7/src/bin/hello.rs
@@ -9,8 +9,8 @@ use embassy_stm32::time::Hertz;
9use embassy_stm32::Config; 9use embassy_stm32::Config;
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11 11
12#[path = "../example_common.rs"] 12use defmt_rtt as _; // global logger
13mod example_common; 13use panic_probe as _;
14 14
15fn config() -> Config { 15fn config() -> Config {
16 let mut config = Config::default(); 16 let mut config = Config::default();
diff --git a/examples/stm32f7/src/bin/sdmmc.rs b/examples/stm32f7/src/bin/sdmmc.rs
index 57b913db9..dae07c303 100644
--- a/examples/stm32f7/src/bin/sdmmc.rs
+++ b/examples/stm32f7/src/bin/sdmmc.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::sdmmc::Sdmmc; 10use embassy_stm32::sdmmc::Sdmmc;
10use embassy_stm32::time::U32Ext; 11use embassy_stm32::time::U32Ext;
11use embassy_stm32::{interrupt, Config, Peripherals}; 12use embassy_stm32::{interrupt, Config, Peripherals};
12use example_common::*;
13 13
14fn config() -> Config { 14fn config() -> Config {
15 let mut config = Config::default(); 15 let mut config = Config::default();
diff --git a/examples/stm32f7/src/bin/usart_dma.rs b/examples/stm32f7/src/bin/usart_dma.rs
index 00deae8b3..69fa21a0d 100644
--- a/examples/stm32f7/src/bin/usart_dma.rs
+++ b/examples/stm32f7/src/bin/usart_dma.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::fmt::Write; 5use core::fmt::Write;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy::executor::Spawner; 8use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 9use embassy_stm32::dma::NoDma;
10use embassy_stm32::usart::{Config, Uart}; 10use embassy_stm32::usart::{Config, Uart};
11use embassy_stm32::Peripherals; 11use embassy_stm32::Peripherals;
12use example_common::*; 12use panic_probe as _;
13 13
14use heapless::String; 14use heapless::String;
15 15
diff --git a/examples/stm32f7/src/example_common.rs b/examples/stm32f7/src/example_common.rs
deleted file mode 100644
index a786cb114..000000000
--- a/examples/stm32f7/src/example_common.rs
+++ /dev/null
@@ -1,27 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _;
4use embassy_stm32::time::U32Ext;
5use embassy_stm32::Config;
6// global logger
7use panic_probe as _;
8
9pub use defmt::*;
10
11use core::sync::atomic::{AtomicUsize, Ordering};
12
13defmt::timestamp! {"{=u64}", {
14 static COUNT: AtomicUsize = AtomicUsize::new(0);
15 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
16 let n = COUNT.load(Ordering::Relaxed);
17 COUNT.store(n + 1, Ordering::Relaxed);
18 n as u64
19 }
20}
21
22#[allow(unused)]
23pub fn config() -> Config {
24 let mut config = Config::default();
25 config.rcc.sys_ck = Some(200.mhz().into());
26 config
27}
diff --git a/examples/stm32g0/Cargo.toml b/examples/stm32g0/Cargo.toml
index a72ba5344..9facbc5c7 100644
--- a/examples/stm32g0/Cargo.toml
+++ b/examples/stm32g0/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "time-driver-any", "stm32g071rb", "memory-x", "unstable-pac", "exti"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "time-driver-any", "stm32g071rb", "memory-x", "unstable-pac", "exti"] }
11 11
12defmt = "0.3" 12defmt = "0.3"
diff --git a/examples/stm32g0/src/bin/blinky.rs b/examples/stm32g0/src/bin/blinky.rs
index 00d67dac0..8b85ca96d 100644
--- a/examples/stm32g0/src/bin/blinky.rs
+++ b/examples/stm32g0/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32g0/src/bin/button.rs b/examples/stm32g0/src/bin/button.rs
index e901c5750..78d7ba1f2 100644
--- a/examples/stm32g0/src/bin/button.rs
+++ b/examples/stm32g0/src/bin/button.rs
@@ -2,11 +2,11 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use cortex_m_rt::entry; 5use cortex_m_rt::entry;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy_stm32::gpio::{Input, Pull}; 8use embassy_stm32::gpio::{Input, Pull};
9use example_common::*; 9use panic_probe as _;
10 10
11#[entry] 11#[entry]
12fn main() -> ! { 12fn main() -> ! {
diff --git a/examples/stm32g0/src/bin/button_exti.rs b/examples/stm32g0/src/bin/button_exti.rs
index 848818bf2..4b1cadcb5 100644
--- a/examples/stm32g0/src/bin/button_exti.rs
+++ b/examples/stm32g0/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32g0/src/example_common.rs b/examples/stm32g0/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32g0/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32g4/Cargo.toml b/examples/stm32g4/Cargo.toml
index 433a3673b..7a1f5a9fa 100644
--- a/examples/stm32g4/Cargo.toml
+++ b/examples/stm32g4/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "time-driver-any", "stm32g491re", "memory-x", "unstable-pac", "exti"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "time-driver-any", "stm32g491re", "memory-x", "unstable-pac", "exti"] }
11embassy-hal-common = {version = "0.1.0", path = "../../embassy-hal-common" } 11embassy-hal-common = {version = "0.1.0", path = "../../embassy-hal-common" }
12 12
diff --git a/examples/stm32g4/src/bin/blinky.rs b/examples/stm32g4/src/bin/blinky.rs
index 1dc67f99e..92ec2b579 100644
--- a/examples/stm32g4/src/bin/blinky.rs
+++ b/examples/stm32g4/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32g4/src/bin/button.rs b/examples/stm32g4/src/bin/button.rs
index 8c0d7d4fe..f6c981309 100644
--- a/examples/stm32g4/src/bin/button.rs
+++ b/examples/stm32g4/src/bin/button.rs
@@ -2,11 +2,11 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use cortex_m_rt::entry; 5use cortex_m_rt::entry;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy_stm32::gpio::{Input, Pull}; 8use embassy_stm32::gpio::{Input, Pull};
9use example_common::*; 9use panic_probe as _;
10 10
11#[entry] 11#[entry]
12fn main() -> ! { 12fn main() -> ! {
diff --git a/examples/stm32g4/src/bin/button_exti.rs b/examples/stm32g4/src/bin/button_exti.rs
index 852fbe3c6..78f2e6ee2 100644
--- a/examples/stm32g4/src/bin/button_exti.rs
+++ b/examples/stm32g4/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32g4/src/bin/pwm.rs b/examples/stm32g4/src/bin/pwm.rs
index fb71c8b7d..3770f6f36 100644
--- a/examples/stm32g4/src/bin/pwm.rs
+++ b/examples/stm32g4/src/bin/pwm.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::pwm::{simple_pwm::SimplePwm, Channel}; 9use embassy_stm32::pwm::{simple_pwm::SimplePwm, Channel};
10use embassy_stm32::time::U32Ext; 10use embassy_stm32::time::U32Ext;
11use embassy_stm32::Peripherals; 11use embassy_stm32::Peripherals;
12use example_common::*; 12use panic_probe as _;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32g4/src/example_common.rs b/examples/stm32g4/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32g4/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32h7/Cargo.toml b/examples/stm32h7/Cargo.toml
index 2e761df8f..5c8861af5 100644
--- a/examples/stm32h7/Cargo.toml
+++ b/examples/stm32h7/Cargo.toml
@@ -8,7 +8,7 @@ resolver = "2"
8[features] 8[features]
9 9
10[dependencies] 10[dependencies]
11embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 11embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
12embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32h743bi", "net", "time-driver-any", "exti", "unstable-pac", "unstable-traits"] } 12embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32h743bi", "net", "time-driver-any", "exti", "unstable-pac", "unstable-traits"] }
13embassy-net = { path = "../../embassy-net", default-features = false, features = ["defmt", "tcp", "medium-ethernet", "pool-16"] } 13embassy-net = { path = "../../embassy-net", default-features = false, features = ["defmt", "tcp", "medium-ethernet", "pool-16"] }
14embassy-hal-common = { path = "../../embassy-hal-common", default-features = false, features = ["defmt"] } 14embassy-hal-common = { path = "../../embassy-hal-common", default-features = false, features = ["defmt"] }
diff --git a/examples/stm32h7/src/bin/blinky.rs b/examples/stm32h7/src/bin/blinky.rs
index 7e5934239..2329125a6 100644
--- a/examples/stm32h7/src/bin/blinky.rs
+++ b/examples/stm32h7/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32h7/src/bin/button_exti.rs b/examples/stm32h7/src/bin/button_exti.rs
index 852fbe3c6..78f2e6ee2 100644
--- a/examples/stm32h7/src/bin/button_exti.rs
+++ b/examples/stm32h7/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32h7/src/bin/camera.rs b/examples/stm32h7/src/bin/camera.rs
index f87b27f4f..3311ba858 100644
--- a/examples/stm32h7/src/bin/camera.rs
+++ b/examples/stm32h7/src/bin/camera.rs
@@ -10,23 +10,12 @@ use embassy_stm32::i2c::I2c;
10use embassy_stm32::interrupt; 10use embassy_stm32::interrupt;
11use embassy_stm32::rcc::{Mco, Mco1Source, McoClock}; 11use embassy_stm32::rcc::{Mco, Mco1Source, McoClock};
12use embassy_stm32::time::U32Ext; 12use embassy_stm32::time::U32Ext;
13use embassy_stm32::Config;
13use embassy_stm32::Peripherals; 14use embassy_stm32::Peripherals;
14 15
15use defmt_rtt as _; // global logger 16use defmt_rtt as _; // global logger
16use panic_probe as _; 17use panic_probe as _;
17 18
18use core::sync::atomic::{AtomicUsize, Ordering};
19use embassy_stm32::Config;
20
21defmt::timestamp! {"{=u64}", {
22 static COUNT: AtomicUsize = AtomicUsize::new(0);
23 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
24 let n = COUNT.load(Ordering::Relaxed);
25 COUNT.store(n + 1, Ordering::Relaxed);
26 n as u64
27 }
28}
29
30#[allow(unused)] 19#[allow(unused)]
31pub fn config() -> Config { 20pub fn config() -> Config {
32 let mut config = Config::default(); 21 let mut config = Config::default();
diff --git a/examples/stm32h7/src/bin/dac.rs b/examples/stm32h7/src/bin/dac.rs
index 8353405ad..86c874a6a 100644
--- a/examples/stm32h7/src/bin/dac.rs
+++ b/examples/stm32h7/src/bin/dac.rs
@@ -2,13 +2,22 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7
8use example_common::*;
9 7
10use cortex_m_rt::entry; 8use cortex_m_rt::entry;
9use defmt::*;
11use embassy_stm32::dac::{Channel, Dac, Value}; 10use embassy_stm32::dac::{Channel, Dac, Value};
11use embassy_stm32::time::U32Ext;
12use embassy_stm32::Config;
13
14pub fn config() -> Config {
15 let mut config = Config::default();
16 config.rcc.sys_ck = Some(400.mhz().into());
17 config.rcc.hclk = Some(200.mhz().into());
18 config.rcc.pll1.q_ck = Some(100.mhz().into());
19 config
20}
12 21
13#[entry] 22#[entry]
14fn main() -> ! { 23fn main() -> ! {
diff --git a/examples/stm32h7/src/bin/eth.rs b/examples/stm32h7/src/bin/eth.rs
index 47d8c5c56..4eb5421a8 100644
--- a/examples/stm32h7/src/bin/eth.rs
+++ b/examples/stm32h7/src/bin/eth.rs
@@ -2,14 +2,11 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7use embassy_stm32::peripherals::ETH;
8use example_common::config;
9 7
10use cortex_m_rt::entry; 8use cortex_m_rt::entry;
11use defmt::{info, unwrap}; 9use defmt::*;
12use defmt_rtt as _; // global logger
13use embassy::executor::{Executor, Spawner}; 10use embassy::executor::{Executor, Spawner};
14use embassy::io::AsyncWriteExt; 11use embassy::io::AsyncWriteExt;
15use embassy::time::{Duration, Timer}; 12use embassy::time::{Duration, Timer};
@@ -19,11 +16,13 @@ use embassy_net::{
19}; 16};
20use embassy_stm32::eth::lan8742a::LAN8742A; 17use embassy_stm32::eth::lan8742a::LAN8742A;
21use embassy_stm32::eth::{Ethernet, State}; 18use embassy_stm32::eth::{Ethernet, State};
19use embassy_stm32::interrupt;
20use embassy_stm32::peripherals::ETH;
21use embassy_stm32::peripherals::RNG;
22use embassy_stm32::rng::Rng; 22use embassy_stm32::rng::Rng;
23use embassy_stm32::{interrupt, peripherals}; 23use embassy_stm32::time::U32Ext;
24use embassy_stm32::Config;
24use heapless::Vec; 25use heapless::Vec;
25use panic_probe as _;
26use peripherals::RNG;
27 26
28#[embassy::task] 27#[embassy::task]
29async fn main_task( 28async fn main_task(
@@ -87,6 +86,15 @@ static ETH: Forever<Ethernet<'static, ETH, LAN8742A, 4, 4>> = Forever::new();
87static CONFIG: Forever<StaticConfigurator> = Forever::new(); 86static CONFIG: Forever<StaticConfigurator> = Forever::new();
88static NET_RESOURCES: Forever<StackResources<1, 2, 8>> = Forever::new(); 87static NET_RESOURCES: Forever<StackResources<1, 2, 8>> = Forever::new();
89 88
89#[allow(unused)]
90pub fn config() -> Config {
91 let mut config = Config::default();
92 config.rcc.sys_ck = Some(400.mhz().into());
93 config.rcc.hclk = Some(200.mhz().into());
94 config.rcc.pll1.q_ck = Some(100.mhz().into());
95 config
96}
97
90#[entry] 98#[entry]
91fn main() -> ! { 99fn main() -> ! {
92 info!("Hello World!"); 100 info!("Hello World!");
diff --git a/examples/stm32h7/src/bin/fmc.rs b/examples/stm32h7/src/bin/fmc.rs
index b9ac1318e..ba8215d6a 100644
--- a/examples/stm32h7/src/bin/fmc.rs
+++ b/examples/stm32h7/src/bin/fmc.rs
@@ -2,13 +2,23 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Delay, Duration, Timer}; 8use embassy::time::{Delay, Duration, Timer};
9use embassy_stm32::fmc::Fmc; 9use embassy_stm32::fmc::Fmc;
10use embassy_stm32::time::U32Ext;
11use embassy_stm32::Config;
10use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
11use example_common::*; 13use panic_probe as _;
14
15pub fn config() -> Config {
16 let mut config = Config::default();
17 config.rcc.sys_ck = Some(400.mhz().into());
18 config.rcc.hclk = Some(200.mhz().into());
19 config.rcc.pll1.q_ck = Some(100.mhz().into());
20 config
21}
12 22
13#[embassy::main(config = "config()")] 23#[embassy::main(config = "config()")]
14async fn main(_spawner: Spawner, p: Peripherals) { 24async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32h7/src/bin/low_level_timer_api.rs b/examples/stm32h7/src/bin/low_level_timer_api.rs
index 3a47dc22b..9ddfd8b27 100644
--- a/examples/stm32h7/src/bin/low_level_timer_api.rs
+++ b/examples/stm32h7/src/bin/low_level_timer_api.rs
@@ -2,10 +2,11 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::marker::PhantomData; 5use core::marker::PhantomData;
6use defmt_rtt as _; // global logger
7use panic_probe as _;
8 8
9use defmt::*;
9use embassy::executor::Spawner; 10use embassy::executor::Spawner;
10use embassy::time::{Duration, Timer}; 11use embassy::time::{Duration, Timer};
11use embassy::util::Unborrow; 12use embassy::util::Unborrow;
@@ -15,7 +16,6 @@ use embassy_stm32::gpio::Speed;
15use embassy_stm32::pwm::*; 16use embassy_stm32::pwm::*;
16use embassy_stm32::time::{Hertz, U32Ext}; 17use embassy_stm32::time::{Hertz, U32Ext};
17use embassy_stm32::{Config, Peripherals}; 18use embassy_stm32::{Config, Peripherals};
18use example_common::*;
19 19
20pub fn config() -> Config { 20pub fn config() -> Config {
21 let mut config = Config::default(); 21 let mut config = Config::default();
diff --git a/examples/stm32h7/src/bin/mco.rs b/examples/stm32h7/src/bin/mco.rs
index f27bd8ef8..a6735036f 100644
--- a/examples/stm32h7/src/bin/mco.rs
+++ b/examples/stm32h7/src/bin/mco.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::rcc::{Mco, Mco1Source, McoClock}; 10use embassy_stm32::rcc::{Mco, Mco1Source, McoClock};
11use embassy_stm32::Peripherals; 11use embassy_stm32::Peripherals;
12use example_common::*; 12use panic_probe as _;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32h7/src/bin/pwm.rs b/examples/stm32h7/src/bin/pwm.rs
index b3edbde68..c33ba066e 100644
--- a/examples/stm32h7/src/bin/pwm.rs
+++ b/examples/stm32h7/src/bin/pwm.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::pwm::{simple_pwm::SimplePwm, Channel}; 9use embassy_stm32::pwm::{simple_pwm::SimplePwm, Channel};
10use embassy_stm32::time::U32Ext; 10use embassy_stm32::time::U32Ext;
11use embassy_stm32::{Config, Peripherals}; 11use embassy_stm32::{Config, Peripherals};
12use example_common::*; 12use panic_probe as _;
13 13
14pub fn config() -> Config { 14pub fn config() -> Config {
15 let mut config = Config::default(); 15 let mut config = Config::default();
diff --git a/examples/stm32h7/src/bin/rng.rs b/examples/stm32h7/src/bin/rng.rs
index 932cfcb8b..b914fa709 100644
--- a/examples/stm32h7/src/bin/rng.rs
+++ b/examples/stm32h7/src/bin/rng.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::rng::Rng; 8use embassy_stm32::rng::Rng;
9use embassy_stm32::Peripherals; 9use embassy_stm32::Peripherals;
10use example_common::*; 10use panic_probe as _;
11 11
12#[embassy::main] 12#[embassy::main]
13async fn main(_spawner: Spawner, p: Peripherals) { 13async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32h7/src/bin/sdmmc.rs b/examples/stm32h7/src/bin/sdmmc.rs
index 19c4deed1..c3b2ebcda 100644
--- a/examples/stm32h7/src/bin/sdmmc.rs
+++ b/examples/stm32h7/src/bin/sdmmc.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::sdmmc::Sdmmc; 10use embassy_stm32::sdmmc::Sdmmc;
10use embassy_stm32::time::U32Ext; 11use embassy_stm32::time::U32Ext;
11use embassy_stm32::{interrupt, Config, Peripherals}; 12use embassy_stm32::{interrupt, Config, Peripherals};
12use example_common::*;
13 13
14fn config() -> Config { 14fn config() -> Config {
15 let mut config = Config::default(); 15 let mut config = Config::default();
diff --git a/examples/stm32h7/src/bin/spi.rs b/examples/stm32h7/src/bin/spi.rs
index 17e64da79..a0acb03db 100644
--- a/examples/stm32h7/src/bin/spi.rs
+++ b/examples/stm32h7/src/bin/spi.rs
@@ -2,22 +2,30 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use core::fmt::Write; 8use core::fmt::Write;
9use core::str::from_utf8;
10use cortex_m_rt::entry;
11use defmt::*;
9use embassy::executor::Executor; 12use embassy::executor::Executor;
10use embassy::util::Forever; 13use embassy::util::Forever;
11use embassy_stm32::dma::NoDma; 14use embassy_stm32::dma::NoDma;
12use embassy_stm32::spi;
13use example_common::*;
14
15use core::str::from_utf8;
16use cortex_m_rt::entry;
17use embassy_stm32::peripherals::SPI3; 15use embassy_stm32::peripherals::SPI3;
16use embassy_stm32::spi;
18use embassy_stm32::time::U32Ext; 17use embassy_stm32::time::U32Ext;
18use embassy_stm32::Config;
19use heapless::String; 19use heapless::String;
20 20
21pub fn config() -> Config {
22 let mut config = Config::default();
23 config.rcc.sys_ck = Some(400.mhz().into());
24 config.rcc.hclk = Some(200.mhz().into());
25 config.rcc.pll1.q_ck = Some(100.mhz().into());
26 config
27}
28
21#[embassy::task] 29#[embassy::task]
22async fn main_task(mut spi: spi::Spi<'static, SPI3, NoDma, NoDma>) { 30async fn main_task(mut spi: spi::Spi<'static, SPI3, NoDma, NoDma>) {
23 for n in 0u32.. { 31 for n in 0u32.. {
diff --git a/examples/stm32h7/src/bin/spi_dma.rs b/examples/stm32h7/src/bin/spi_dma.rs
index 15ae09973..8f77b1d09 100644
--- a/examples/stm32h7/src/bin/spi_dma.rs
+++ b/examples/stm32h7/src/bin/spi_dma.rs
@@ -2,21 +2,29 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use core::fmt::Write; 8use core::fmt::Write;
9use embassy::executor::Executor;
10use embassy::util::Forever;
11use embassy_stm32::time::U32Ext;
12use example_common::*;
13
14use core::str::from_utf8; 9use core::str::from_utf8;
15use cortex_m_rt::entry; 10use cortex_m_rt::entry;
11use defmt::*;
12use embassy::executor::Executor;
13use embassy::util::Forever;
16use embassy_stm32::peripherals::{DMA1_CH3, DMA1_CH4, SPI3}; 14use embassy_stm32::peripherals::{DMA1_CH3, DMA1_CH4, SPI3};
17use embassy_stm32::spi; 15use embassy_stm32::spi;
16use embassy_stm32::time::U32Ext;
17use embassy_stm32::Config;
18use heapless::String; 18use heapless::String;
19 19
20pub fn config() -> Config {
21 let mut config = Config::default();
22 config.rcc.sys_ck = Some(400.mhz().into());
23 config.rcc.hclk = Some(200.mhz().into());
24 config.rcc.pll1.q_ck = Some(100.mhz().into());
25 config
26}
27
20#[embassy::task] 28#[embassy::task]
21async fn main_task(mut spi: spi::Spi<'static, SPI3, DMA1_CH3, DMA1_CH4>) { 29async fn main_task(mut spi: spi::Spi<'static, SPI3, DMA1_CH3, DMA1_CH4>) {
22 for n in 0u32.. { 30 for n in 0u32.. {
diff --git a/examples/stm32h7/src/bin/usart.rs b/examples/stm32h7/src/bin/usart.rs
index 211e57cda..0982a6ac6 100644
--- a/examples/stm32h7/src/bin/usart.rs
+++ b/examples/stm32h7/src/bin/usart.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Executor; 7use embassy::executor::Executor;
8use embassy::util::Forever; 8use embassy::util::Forever;
9use embassy_stm32::dma::NoDma; 9use embassy_stm32::dma::NoDma;
10use embassy_stm32::usart::{Config, Uart}; 10use embassy_stm32::usart::{Config, Uart};
11use example_common::*; 11use panic_probe as _;
12 12
13use cortex_m_rt::entry; 13use cortex_m_rt::entry;
14 14
diff --git a/examples/stm32h7/src/bin/usart_dma.rs b/examples/stm32h7/src/bin/usart_dma.rs
index a9221e1b6..74de8b2a3 100644
--- a/examples/stm32h7/src/bin/usart_dma.rs
+++ b/examples/stm32h7/src/bin/usart_dma.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::fmt::Write; 5use core::fmt::Write;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy::executor::Executor; 8use embassy::executor::Executor;
9use embassy::util::Forever; 9use embassy::util::Forever;
10use embassy_stm32::dma::NoDma; 10use embassy_stm32::dma::NoDma;
11use embassy_stm32::usart::{Config, Uart}; 11use embassy_stm32::usart::{Config, Uart};
12use example_common::*; 12use panic_probe as _;
13 13
14use cortex_m_rt::entry; 14use cortex_m_rt::entry;
15use heapless::String; 15use heapless::String;
diff --git a/examples/stm32h7/src/bin/usart_split.rs b/examples/stm32h7/src/bin/usart_split.rs
index b112290f9..ee1763aa4 100644
--- a/examples/stm32h7/src/bin/usart_split.rs
+++ b/examples/stm32h7/src/bin/usart_split.rs
@@ -2,8 +2,8 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::blocking_mutex::raw::NoopRawMutex; 7use embassy::blocking_mutex::raw::NoopRawMutex;
8use embassy::channel::mpsc::{self, Channel, Sender}; 8use embassy::channel::mpsc::{self, Channel, Sender};
9use embassy::executor::Spawner; 9use embassy::executor::Spawner;
@@ -14,7 +14,7 @@ use embassy_stm32::{
14 usart::{Config, Uart, UartRx}, 14 usart::{Config, Uart, UartRx},
15 Peripherals, 15 Peripherals,
16}; 16};
17use example_common::*; 17use panic_probe as _;
18 18
19#[embassy::task] 19#[embassy::task]
20async fn writer(mut usart: Uart<'static, UART7, NoDma, NoDma>) { 20async fn writer(mut usart: Uart<'static, UART7, NoDma, NoDma>) {
diff --git a/examples/stm32h7/src/example_common.rs b/examples/stm32h7/src/example_common.rs
deleted file mode 100644
index b8acc2790..000000000
--- a/examples/stm32h7/src/example_common.rs
+++ /dev/null
@@ -1,28 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9use embassy_stm32::time::U32Ext;
10use embassy_stm32::Config;
11
12defmt::timestamp! {"{=u64}", {
13 static COUNT: AtomicUsize = AtomicUsize::new(0);
14 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
15 let n = COUNT.load(Ordering::Relaxed);
16 COUNT.store(n + 1, Ordering::Relaxed);
17 n as u64
18 }
19}
20
21#[allow(unused)]
22pub fn config() -> Config {
23 let mut config = Config::default();
24 config.rcc.sys_ck = Some(400.mhz().into());
25 config.rcc.hclk = Some(200.mhz().into());
26 config.rcc.pll1.q_ck = Some(100.mhz().into());
27 config
28}
diff --git a/examples/stm32l0/Cargo.toml b/examples/stm32l0/Cargo.toml
index ce4efa52c..8063e6c7e 100644
--- a/examples/stm32l0/Cargo.toml
+++ b/examples/stm32l0/Cargo.toml
@@ -10,7 +10,7 @@ default = ["nightly"]
10nightly = ["embassy-stm32/nightly", "embassy-lora", "lorawan-device", "lorawan-encoding"] 10nightly = ["embassy-stm32/nightly", "embassy-lora", "lorawan-device", "lorawan-encoding"]
11 11
12[dependencies] 12[dependencies]
13embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 13embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
14embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["defmt", "stm32l072cz", "time-driver-any", "exti", "unstable-traits", "memory-x"] } 14embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["defmt", "stm32l072cz", "time-driver-any", "exti", "unstable-traits", "memory-x"] }
15 15
16embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["sx127x", "time", "defmt"], optional = true} 16embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["sx127x", "time", "defmt"], optional = true}
diff --git a/examples/stm32l0/src/bin/blinky.rs b/examples/stm32l0/src/bin/blinky.rs
index 46e29a897..72f13f06d 100644
--- a/examples/stm32l0/src/bin/blinky.rs
+++ b/examples/stm32l0/src/bin/blinky.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 10use embassy::time::{Duration, Timer};
10use embassy_stm32::gpio::{Level, Output, Speed}; 11use embassy_stm32::gpio::{Level, Output, Speed};
11use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
12use example_common::*;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l0/src/bin/button.rs b/examples/stm32l0/src/bin/button.rs
index 046c43caf..dfa91259a 100644
--- a/examples/stm32l0/src/bin/button.rs
+++ b/examples/stm32l0/src/bin/button.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 8use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
9use embassy_stm32::Peripherals; 9use embassy_stm32::Peripherals;
10use example_common::*; 10use panic_probe as _;
11 11
12#[embassy::main] 12#[embassy::main]
13async fn main(_spawner: Spawner, p: Peripherals) { 13async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l0/src/bin/button_exti.rs b/examples/stm32l0/src/bin/button_exti.rs
index 3edea3976..b1892e2c6 100644
--- a/examples/stm32l0/src/bin/button_exti.rs
+++ b/examples/stm32l0/src/bin/button_exti.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::exti::ExtiInput; 10use embassy_stm32::exti::ExtiInput;
10use embassy_stm32::gpio::{Input, Pull}; 11use embassy_stm32::gpio::{Input, Pull};
11use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
12use example_common::*;
13 13
14fn config() -> embassy_stm32::Config { 14fn config() -> embassy_stm32::Config {
15 let mut config = embassy_stm32::Config::default(); 15 let mut config = embassy_stm32::Config::default();
diff --git a/examples/stm32l0/src/bin/lorawan.rs b/examples/stm32l0/src/bin/lorawan.rs
index df08ba18c..22304f8e5 100644
--- a/examples/stm32l0/src/bin/lorawan.rs
+++ b/examples/stm32l0/src/bin/lorawan.rs
@@ -6,8 +6,8 @@
6#![feature(generic_associated_types)] 6#![feature(generic_associated_types)]
7#![feature(type_alias_impl_trait)] 7#![feature(type_alias_impl_trait)]
8 8
9#[path = "../example_common.rs"] 9use defmt_rtt as _; // global logger
10mod example_common; 10use panic_probe as _;
11 11
12use embassy_lora::{sx127x::*, LoraTimer}; 12use embassy_lora::{sx127x::*, LoraTimer};
13use embassy_stm32::{ 13use embassy_stm32::{
diff --git a/examples/stm32l0/src/bin/raw_spawn.rs b/examples/stm32l0/src/bin/raw_spawn.rs
index 9bb087c9e..4601d85df 100644
--- a/examples/stm32l0/src/bin/raw_spawn.rs
+++ b/examples/stm32l0/src/bin/raw_spawn.rs
@@ -1,9 +1,9 @@
1#![no_std] 1#![no_std]
2#![no_main] 2#![no_main]
3 3
4#[path = "../example_common.rs"] 4use defmt::*;
5mod example_common; 5use defmt_rtt as _; // global logger
6use example_common::*; 6use panic_probe as _;
7 7
8use core::mem; 8use core::mem;
9use cortex_m_rt::entry; 9use cortex_m_rt::entry;
diff --git a/examples/stm32l0/src/bin/spi.rs b/examples/stm32l0/src/bin/spi.rs
index 8d6e89d91..5ed783b10 100644
--- a/examples/stm32l0/src/bin/spi.rs
+++ b/examples/stm32l0/src/bin/spi.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::gpio::{Level, Output, Speed}; 10use embassy_stm32::gpio::{Level, Output, Speed};
10use example_common::*;
11 11
12use embassy_stm32::dma::NoDma; 12use embassy_stm32::dma::NoDma;
13use embassy_stm32::spi::{Config, Spi}; 13use embassy_stm32::spi::{Config, Spi};
diff --git a/examples/stm32l0/src/bin/usart_dma.rs b/examples/stm32l0/src/bin/usart_dma.rs
index 543e66f62..b3fdcacbe 100644
--- a/examples/stm32l0/src/bin/usart_dma.rs
+++ b/examples/stm32l0/src/bin/usart_dma.rs
@@ -2,10 +2,10 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use example_common::*; 8use defmt::*;
9 9
10use embassy::executor::Spawner; 10use embassy::executor::Spawner;
11use embassy_stm32::usart::{Config, Uart}; 11use embassy_stm32::usart::{Config, Uart};
diff --git a/examples/stm32l0/src/bin/usart_irq.rs b/examples/stm32l0/src/bin/usart_irq.rs
index 588073902..abb27fa4f 100644
--- a/examples/stm32l0/src/bin/usart_irq.rs
+++ b/examples/stm32l0/src/bin/usart_irq.rs
@@ -2,10 +2,10 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use example_common::*; 8use defmt::*;
9 9
10use embassy::executor::Spawner; 10use embassy::executor::Spawner;
11use embassy::io::{AsyncBufReadExt, AsyncWriteExt}; 11use embassy::io::{AsyncBufReadExt, AsyncWriteExt};
diff --git a/examples/stm32l0/src/example_common.rs b/examples/stm32l0/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32l0/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32l1/Cargo.toml b/examples/stm32l1/Cargo.toml
index 0cdf59162..a7a6c228e 100644
--- a/examples/stm32l1/Cargo.toml
+++ b/examples/stm32l1/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32l151cb-a", "time-driver-any", "memory-x"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32l151cb-a", "time-driver-any", "memory-x"] }
11 11
12defmt = "0.3" 12defmt = "0.3"
diff --git a/examples/stm32l1/src/bin/blinky.rs b/examples/stm32l1/src/bin/blinky.rs
index 07c804e9f..e81455524 100644
--- a/examples/stm32l1/src/bin/blinky.rs
+++ b/examples/stm32l1/src/bin/blinky.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy::time::{Duration, Timer}; 10use embassy::time::{Duration, Timer};
10use embassy_stm32::gpio::{Level, Output, Speed}; 11use embassy_stm32::gpio::{Level, Output, Speed};
11use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
12use example_common::*;
13 13
14#[embassy::main] 14#[embassy::main]
15async fn main(_spawner: Spawner, p: Peripherals) { 15async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l1/src/bin/spi.rs b/examples/stm32l1/src/bin/spi.rs
index e97e3ebb4..bced0c54e 100644
--- a/examples/stm32l1/src/bin/spi.rs
+++ b/examples/stm32l1/src/bin/spi.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::gpio::{Level, Output, Speed}; 10use embassy_stm32::gpio::{Level, Output, Speed};
10use example_common::*;
11 11
12use embassy_stm32::dma::NoDma; 12use embassy_stm32::dma::NoDma;
13use embassy_stm32::spi::{Config, Spi}; 13use embassy_stm32::spi::{Config, Spi};
diff --git a/examples/stm32l1/src/example_common.rs b/examples/stm32l1/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32l1/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32l4/Cargo.toml b/examples/stm32l4/Cargo.toml
index 4b1f9a912..0709a8f5b 100644
--- a/examples/stm32l4/Cargo.toml
+++ b/examples/stm32l4/Cargo.toml
@@ -8,7 +8,7 @@ resolver = "2"
8[features] 8[features]
9 9
10[dependencies] 10[dependencies]
11embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt" ] } 11embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
12embassy-traits = { version = "0.1.0", path = "../../embassy-traits" } 12embassy-traits = { version = "0.1.0", path = "../../embassy-traits" }
13embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "stm32l4s5vi", "time-driver-any", "exti", "unstable-traits"] } 13embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "stm32l4s5vi", "time-driver-any", "exti", "unstable-traits"] }
14 14
diff --git a/examples/stm32l4/src/bin/adc.rs b/examples/stm32l4/src/bin/adc.rs
index 83c54222d..58ef6ebaa 100644
--- a/examples/stm32l4/src/bin/adc.rs
+++ b/examples/stm32l4/src/bin/adc.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::time::Delay; 9use embassy::time::Delay;
9use embassy_stm32::adc::{Adc, Resolution}; 10use embassy_stm32::adc::{Adc, Resolution};
10use embassy_stm32::pac; 11use embassy_stm32::pac;
11use example_common::*;
12 12
13#[cortex_m_rt::entry] 13#[cortex_m_rt::entry]
14fn main() -> ! { 14fn main() -> ! {
diff --git a/examples/stm32l4/src/bin/blinky.rs b/examples/stm32l4/src/bin/blinky.rs
index 030283756..e24a5bd37 100644
--- a/examples/stm32l4/src/bin/blinky.rs
+++ b/examples/stm32l4/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l4/src/bin/button.rs b/examples/stm32l4/src/bin/button.rs
index 6073c137e..ff270b519 100644
--- a/examples/stm32l4/src/bin/button.rs
+++ b/examples/stm32l4/src/bin/button.rs
@@ -2,10 +2,10 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy_stm32::gpio::{Input, Pull}; 7use embassy_stm32::gpio::{Input, Pull};
8use example_common::*; 8use panic_probe as _;
9 9
10#[cortex_m_rt::entry] 10#[cortex_m_rt::entry]
11fn main() -> ! { 11fn main() -> ! {
diff --git a/examples/stm32l4/src/bin/button_exti.rs b/examples/stm32l4/src/bin/button_exti.rs
index 848818bf2..4b1cadcb5 100644
--- a/examples/stm32l4/src/bin/button_exti.rs
+++ b/examples/stm32l4/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l4/src/bin/dac.rs b/examples/stm32l4/src/bin/dac.rs
index 201ba473b..c26e7e709 100644
--- a/examples/stm32l4/src/bin/dac.rs
+++ b/examples/stm32l4/src/bin/dac.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy_stm32::dac::{Channel, Dac, Value}; 9use embassy_stm32::dac::{Channel, Dac, Value};
9use embassy_stm32::pac; 10use embassy_stm32::pac;
10use example_common::*;
11 11
12#[cortex_m_rt::entry] 12#[cortex_m_rt::entry]
13fn main() -> ! { 13fn main() -> ! {
diff --git a/examples/stm32l4/src/bin/i2c.rs b/examples/stm32l4/src/bin/i2c.rs
index 615012a06..467765642 100644
--- a/examples/stm32l4/src/bin/i2c.rs
+++ b/examples/stm32l4/src/bin/i2c.rs
@@ -2,16 +2,16 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 10use embassy_stm32::dma::NoDma;
10use embassy_stm32::i2c::I2c; 11use embassy_stm32::i2c::I2c;
11use embassy_stm32::interrupt; 12use embassy_stm32::interrupt;
12use embassy_stm32::time::Hertz; 13use embassy_stm32::time::Hertz;
13use embassy_stm32::Peripherals; 14use embassy_stm32::Peripherals;
14use example_common::{info, unwrap};
15 15
16const ADDRESS: u8 = 0x5F; 16const ADDRESS: u8 = 0x5F;
17const WHOAMI: u8 = 0x0F; 17const WHOAMI: u8 = 0x0F;
diff --git a/examples/stm32l4/src/bin/i2c_blocking_async.rs b/examples/stm32l4/src/bin/i2c_blocking_async.rs
index 07077f9fb..136aea849 100644
--- a/examples/stm32l4/src/bin/i2c_blocking_async.rs
+++ b/examples/stm32l4/src/bin/i2c_blocking_async.rs
@@ -2,9 +2,10 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 10use embassy_stm32::dma::NoDma;
10use embassy_stm32::i2c::I2c; 11use embassy_stm32::i2c::I2c;
@@ -13,7 +14,6 @@ use embassy_stm32::time::Hertz;
13use embassy_stm32::Peripherals; 14use embassy_stm32::Peripherals;
14use embassy_traits::adapter::BlockingAsync; 15use embassy_traits::adapter::BlockingAsync;
15use embedded_hal_async::i2c::I2c as I2cTrait; 16use embedded_hal_async::i2c::I2c as I2cTrait;
16use example_common::{info, unwrap};
17 17
18const ADDRESS: u8 = 0x5F; 18const ADDRESS: u8 = 0x5F;
19const WHOAMI: u8 = 0x0F; 19const WHOAMI: u8 = 0x0F;
diff --git a/examples/stm32l4/src/bin/i2c_dma.rs b/examples/stm32l4/src/bin/i2c_dma.rs
index d77bee8c1..886a0e09f 100644
--- a/examples/stm32l4/src/bin/i2c_dma.rs
+++ b/examples/stm32l4/src/bin/i2c_dma.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::i2c::I2c; 10use embassy_stm32::i2c::I2c;
10use embassy_stm32::interrupt; 11use embassy_stm32::interrupt;
11use embassy_stm32::time::Hertz; 12use embassy_stm32::time::Hertz;
12use embassy_stm32::Peripherals; 13use embassy_stm32::Peripherals;
13use example_common::{info, unwrap};
14 14
15const ADDRESS: u8 = 0x5F; 15const ADDRESS: u8 = 0x5F;
16const WHOAMI: u8 = 0x0F; 16const WHOAMI: u8 = 0x0F;
diff --git a/examples/stm32l4/src/bin/rng.rs b/examples/stm32l4/src/bin/rng.rs
index 37db9e05a..5f75c1ff1 100644
--- a/examples/stm32l4/src/bin/rng.rs
+++ b/examples/stm32l4/src/bin/rng.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::rcc::{ClockSrc, PLLClkDiv, PLLMul, PLLSource, PLLSrcDiv}; 8use embassy_stm32::rcc::{ClockSrc, PLLClkDiv, PLLMul, PLLSource, PLLSrcDiv};
9use embassy_stm32::rng::Rng; 9use embassy_stm32::rng::Rng;
10use embassy_stm32::{Config, Peripherals}; 10use embassy_stm32::{Config, Peripherals};
11use example_common::*; 11use panic_probe as _;
12 12
13fn config() -> Config { 13fn config() -> Config {
14 let mut config = Config::default(); 14 let mut config = Config::default();
diff --git a/examples/stm32l4/src/bin/spi.rs b/examples/stm32l4/src/bin/spi.rs
index 8567d3062..44fdf81a8 100644
--- a/examples/stm32l4/src/bin/spi.rs
+++ b/examples/stm32l4/src/bin/spi.rs
@@ -2,14 +2,14 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy_stm32::dma::NoDma; 9use embassy_stm32::dma::NoDma;
9use embassy_stm32::gpio::{Level, Output, Speed}; 10use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::spi::{Config, Spi}; 11use embassy_stm32::spi::{Config, Spi};
11use embassy_stm32::time::Hertz; 12use embassy_stm32::time::Hertz;
12use example_common::*;
13 13
14#[cortex_m_rt::entry] 14#[cortex_m_rt::entry]
15fn main() -> ! { 15fn main() -> ! {
diff --git a/examples/stm32l4/src/bin/spi_blocking_async.rs b/examples/stm32l4/src/bin/spi_blocking_async.rs
index 89925d309..0398965d3 100644
--- a/examples/stm32l4/src/bin/spi_blocking_async.rs
+++ b/examples/stm32l4/src/bin/spi_blocking_async.rs
@@ -2,9 +2,10 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 10use embassy_stm32::dma::NoDma;
10use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 11use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
@@ -13,7 +14,6 @@ use embassy_stm32::time::Hertz;
13use embassy_stm32::Peripherals; 14use embassy_stm32::Peripherals;
14use embassy_traits::adapter::BlockingAsync; 15use embassy_traits::adapter::BlockingAsync;
15use embedded_hal_async::spi::SpiBus; 16use embedded_hal_async::spi::SpiBus;
16use example_common::*;
17 17
18#[embassy::main] 18#[embassy::main]
19async fn main(_spawner: Spawner, p: Peripherals) { 19async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l4/src/bin/spi_dma.rs b/examples/stm32l4/src/bin/spi_dma.rs
index a9327f8fe..88d02c7e1 100644
--- a/examples/stm32l4/src/bin/spi_dma.rs
+++ b/examples/stm32l4/src/bin/spi_dma.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 10use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
10use embassy_stm32::spi::{Config, Spi}; 11use embassy_stm32::spi::{Config, Spi};
11use embassy_stm32::time::Hertz; 12use embassy_stm32::time::Hertz;
12use embassy_stm32::Peripherals; 13use embassy_stm32::Peripherals;
13use example_common::*;
14 14
15#[embassy::main] 15#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 16async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l4/src/bin/usart.rs b/examples/stm32l4/src/bin/usart.rs
index 00875c896..b38f55456 100644
--- a/examples/stm32l4/src/bin/usart.rs
+++ b/examples/stm32l4/src/bin/usart.rs
@@ -2,12 +2,12 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy_stm32::dma::NoDma; 9use embassy_stm32::dma::NoDma;
9use embassy_stm32::usart::{Config, Uart}; 10use embassy_stm32::usart::{Config, Uart};
10use example_common::*;
11 11
12#[cortex_m_rt::entry] 12#[cortex_m_rt::entry]
13fn main() -> ! { 13fn main() -> ! {
diff --git a/examples/stm32l4/src/bin/usart_blocking_async.rs b/examples/stm32l4/src/bin/usart_blocking_async.rs
index dae673a5d..7efccace5 100644
--- a/examples/stm32l4/src/bin/usart_blocking_async.rs
+++ b/examples/stm32l4/src/bin/usart_blocking_async.rs
@@ -2,16 +2,16 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt_rtt as _; // global logger
6mod example_common; 6use panic_probe as _;
7 7
8use defmt::*;
8use embassy::executor::Spawner; 9use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 10use embassy_stm32::dma::NoDma;
10use embassy_stm32::usart::{Config, Uart}; 11use embassy_stm32::usart::{Config, Uart};
11use embassy_stm32::Peripherals; 12use embassy_stm32::Peripherals;
12use embassy_traits::adapter::BlockingAsync; 13use embassy_traits::adapter::BlockingAsync;
13use embedded_hal_async::serial::{Read, Write}; 14use embedded_hal_async::serial::{Read, Write};
14use example_common::*;
15 15
16#[embassy::main] 16#[embassy::main]
17async fn main(_spawner: Spawner, p: Peripherals) { 17async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l4/src/bin/usart_dma.rs b/examples/stm32l4/src/bin/usart_dma.rs
index b3a1e3897..40e2c3671 100644
--- a/examples/stm32l4/src/bin/usart_dma.rs
+++ b/examples/stm32l4/src/bin/usart_dma.rs
@@ -2,15 +2,15 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"]
6mod example_common;
7use core::fmt::Write; 5use core::fmt::Write;
6use defmt::*;
7use defmt_rtt as _; // global logger
8use embassy::executor::Spawner; 8use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma; 9use embassy_stm32::dma::NoDma;
10use embassy_stm32::usart::{Config, Uart}; 10use embassy_stm32::usart::{Config, Uart};
11use embassy_stm32::Peripherals; 11use embassy_stm32::Peripherals;
12use example_common::*;
13use heapless::String; 12use heapless::String;
13use panic_probe as _;
14 14
15#[embassy::main] 15#[embassy::main]
16async fn main(_spawner: Spawner, p: Peripherals) { 16async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32l4/src/example_common.rs b/examples/stm32l4/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32l4/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32u5/Cargo.toml b/examples/stm32u5/Cargo.toml
index 87e69c68a..e518195bc 100644
--- a/examples/stm32u5/Cargo.toml
+++ b/examples/stm32u5/Cargo.toml
@@ -6,8 +6,8 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "stm32u585ai", "memory-x" ] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "stm32u585ai", "time-driver-any", "memory-x" ] }
11 11
12defmt = "0.3" 12defmt = "0.3"
13defmt-rtt = "0.3" 13defmt-rtt = "0.3"
diff --git a/examples/stm32u5/src/bin/boot.rs b/examples/stm32u5/src/bin/boot.rs
index 23cfc3061..e04021349 100644
--- a/examples/stm32u5/src/bin/boot.rs
+++ b/examples/stm32u5/src/bin/boot.rs
@@ -2,9 +2,9 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use example_common::*; 7use panic_probe as _;
8 8
9use embassy_stm32 as _; 9use embassy_stm32 as _;
10 10
diff --git a/examples/stm32u5/src/example_common.rs b/examples/stm32u5/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32u5/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32wb55/Cargo.toml b/examples/stm32wb55/Cargo.toml
index bd066ef05..8997d411d 100644
--- a/examples/stm32wb55/Cargo.toml
+++ b/examples/stm32wb55/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wb55cc", "time-driver-any", "exti"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wb55cc", "time-driver-any", "exti"] }
11 11
12defmt = "0.3" 12defmt = "0.3"
diff --git a/examples/stm32wb55/src/bin/blinky.rs b/examples/stm32wb55/src/bin/blinky.rs
index e1dbb30de..59324161a 100644
--- a/examples/stm32wb55/src/bin/blinky.rs
+++ b/examples/stm32wb55/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32wb55/src/bin/button_exti.rs b/examples/stm32wb55/src/bin/button_exti.rs
index 4592fa308..a30a4a216 100644
--- a/examples/stm32wb55/src/bin/button_exti.rs
+++ b/examples/stm32wb55/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32wb55/src/example_common.rs b/examples/stm32wb55/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32wb55/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}
diff --git a/examples/stm32wl55/Cargo.toml b/examples/stm32wl55/Cargo.toml
index 4901ea693..97b38aeab 100644
--- a/examples/stm32wl55/Cargo.toml
+++ b/examples/stm32wl55/Cargo.toml
@@ -6,7 +6,7 @@ version = "0.1.0"
6resolver = "2" 6resolver = "2"
7 7
8[dependencies] 8[dependencies]
9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt"] } 9embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wl55jc-cm4", "time-driver-any", "memory-x", "subghz", "unstable-pac", "exti"] } 10embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wl55jc-cm4", "time-driver-any", "memory-x", "subghz", "unstable-pac", "exti"] }
11embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time"] } 11embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time"] }
12 12
diff --git a/examples/stm32wl55/src/bin/blinky.rs b/examples/stm32wl55/src/bin/blinky.rs
index 9ec208c3d..78079bfd3 100644
--- a/examples/stm32wl55/src/bin/blinky.rs
+++ b/examples/stm32wl55/src/bin/blinky.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy::time::{Duration, Timer}; 8use embassy::time::{Duration, Timer};
9use embassy_stm32::gpio::{Level, Output, Speed}; 9use embassy_stm32::gpio::{Level, Output, Speed};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32wl55/src/bin/button.rs b/examples/stm32wl55/src/bin/button.rs
index be8f60e26..f80b9ab4f 100644
--- a/examples/stm32wl55/src/bin/button.rs
+++ b/examples/stm32wl55/src/bin/button.rs
@@ -2,10 +2,10 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 7use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
8use example_common::*; 8use panic_probe as _;
9 9
10use cortex_m_rt::entry; 10use cortex_m_rt::entry;
11 11
diff --git a/examples/stm32wl55/src/bin/button_exti.rs b/examples/stm32wl55/src/bin/button_exti.rs
index 8d66c7258..9a427c2d3 100644
--- a/examples/stm32wl55/src/bin/button_exti.rs
+++ b/examples/stm32wl55/src/bin/button_exti.rs
@@ -2,13 +2,13 @@
2#![no_main] 2#![no_main]
3#![feature(type_alias_impl_trait)] 3#![feature(type_alias_impl_trait)]
4 4
5#[path = "../example_common.rs"] 5use defmt::*;
6mod example_common; 6use defmt_rtt as _; // global logger
7use embassy::executor::Spawner; 7use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use example_common::*; 11use panic_probe as _;
12 12
13#[embassy::main] 13#[embassy::main]
14async fn main(_spawner: Spawner, p: Peripherals) { 14async fn main(_spawner: Spawner, p: Peripherals) {
diff --git a/examples/stm32wl55/src/bin/lorawan.rs b/examples/stm32wl55/src/bin/lorawan.rs
index 5d26dead2..db4725630 100644
--- a/examples/stm32wl55/src/bin/lorawan.rs
+++ b/examples/stm32wl55/src/bin/lorawan.rs
@@ -5,8 +5,8 @@
5#![feature(generic_associated_types)] 5#![feature(generic_associated_types)]
6#![feature(type_alias_impl_trait)] 6#![feature(type_alias_impl_trait)]
7 7
8#[path = "../example_common.rs"] 8use defmt_rtt as _; // global logger
9mod example_common; 9use panic_probe as _;
10 10
11use embassy_lora::{stm32wl::*, LoraTimer}; 11use embassy_lora::{stm32wl::*, LoraTimer};
12use embassy_stm32::{ 12use embassy_stm32::{
diff --git a/examples/stm32wl55/src/bin/subghz.rs b/examples/stm32wl55/src/bin/subghz.rs
index 42d4eb64c..562e25ac0 100644
--- a/examples/stm32wl55/src/bin/subghz.rs
+++ b/examples/stm32wl55/src/bin/subghz.rs
@@ -5,9 +5,10 @@
5#![feature(generic_associated_types)] 5#![feature(generic_associated_types)]
6#![feature(type_alias_impl_trait)] 6#![feature(type_alias_impl_trait)]
7 7
8#[path = "../example_common.rs"] 8use defmt_rtt as _; // global logger
9mod example_common; 9use panic_probe as _;
10 10
11use defmt::*;
11use embassy::channel::signal::Signal; 12use embassy::channel::signal::Signal;
12use embassy::interrupt::{Interrupt, InterruptExt}; 13use embassy::interrupt::{Interrupt, InterruptExt};
13use embassy_stm32::dma::NoDma; 14use embassy_stm32::dma::NoDma;
@@ -16,7 +17,6 @@ use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
16use embassy_stm32::interrupt; 17use embassy_stm32::interrupt;
17use embassy_stm32::subghz::*; 18use embassy_stm32::subghz::*;
18use embassy_stm32::Peripherals; 19use embassy_stm32::Peripherals;
19use example_common::unwrap;
20 20
21const PING_DATA: &str = "PING"; 21const PING_DATA: &str = "PING";
22const DATA_LEN: u8 = PING_DATA.len() as u8; 22const DATA_LEN: u8 = PING_DATA.len() as u8;
diff --git a/examples/stm32wl55/src/example_common.rs b/examples/stm32wl55/src/example_common.rs
deleted file mode 100644
index 54d633837..000000000
--- a/examples/stm32wl55/src/example_common.rs
+++ /dev/null
@@ -1,17 +0,0 @@
1#![macro_use]
2
3use defmt_rtt as _; // global logger
4use panic_probe as _;
5
6pub use defmt::*;
7
8use core::sync::atomic::{AtomicUsize, Ordering};
9
10defmt::timestamp! {"{=u64}", {
11 static COUNT: AtomicUsize = AtomicUsize::new(0);
12 // NOTE(no-CAS) `timestamps` runs with interrupts disabled
13 let n = COUNT.load(Ordering::Relaxed);
14 COUNT.store(n + 1, Ordering::Relaxed);
15 n as u64
16 }
17}