aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32wl55/Cargo.toml34
-rw-r--r--examples/stm32wl55/memory.x5
-rw-r--r--examples/stm32wl55/src/bin/blinky.rs34
-rw-r--r--examples/stm32wl55/src/bin/button.rs40
-rw-r--r--examples/stm32wl55/src/example_common.rs17
5 files changed, 130 insertions, 0 deletions
diff --git a/examples/stm32wl55/Cargo.toml b/examples/stm32wl55/Cargo.toml
new file mode 100644
index 000000000..ebbe8b847
--- /dev/null
+++ b/examples/stm32wl55/Cargo.toml
@@ -0,0 +1,34 @@
1[package]
2authors = ["Dario Nieuwenhuis <[email protected]>", "Ulf Lilleengen <[email protected]>"]
3edition = "2018"
4name = "embassy-stm32wl55-examples"
5version = "0.1.0"
6resolver = "2"
7
8[features]
9default = [
10 "defmt-default",
11]
12defmt-default = []
13defmt-trace = []
14defmt-debug = []
15defmt-info = []
16defmt-warn = []
17defmt-error = []
18
19[dependencies]
20embassy = { version = "0.1.0", path = "../../embassy", features = ["defmt", "defmt-trace"] }
21embassy-traits = { version = "0.1.0", path = "../../embassy-traits", features = ["defmt"] }
22embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["defmt", "defmt-trace", "stm32wl55jc_cm4", "time-driver-tim2", "memory-x"] }
23embassy-hal-common = {version = "0.1.0", path = "../../embassy-hal-common" }
24
25defmt = "0.2.0"
26defmt-rtt = "0.2.0"
27
28cortex-m = "0.7.1"
29cortex-m-rt = "0.6.14"
30embedded-hal = { version = "0.2.4" }
31panic-probe = { version = "0.2.0", features= ["print-defmt"] }
32futures = { version = "0.3.8", default-features = false, features = ["async-await"] }
33rtt-target = { version = "0.3", features = ["cortex-m"] }
34heapless = { version = "0.7.1", default-features = false }
diff --git a/examples/stm32wl55/memory.x b/examples/stm32wl55/memory.x
new file mode 100644
index 000000000..e8b2737fe
--- /dev/null
+++ b/examples/stm32wl55/memory.x
@@ -0,0 +1,5 @@
1MEMORY
2{
3 FLASH : ORIGIN = 0x08000000, LENGTH = 256K
4 RAM : ORIGIN = 0x20000000, LENGTH = 64K
5}
diff --git a/examples/stm32wl55/src/bin/blinky.rs b/examples/stm32wl55/src/bin/blinky.rs
new file mode 100644
index 000000000..b5e5ffcf9
--- /dev/null
+++ b/examples/stm32wl55/src/bin/blinky.rs
@@ -0,0 +1,34 @@
1#![no_std]
2#![no_main]
3#![feature(trait_alias)]
4#![feature(type_alias_impl_trait)]
5#![allow(incomplete_features)]
6
7#[path = "../example_common.rs"]
8mod example_common;
9use embassy::executor::Spawner;
10use embassy::time::{Duration, Timer};
11use embassy_stm32::dbgmcu::Dbgmcu;
12use embassy_stm32::gpio::{Level, Output, Speed};
13use embassy_stm32::Peripherals;
14use embedded_hal::digital::v2::OutputPin;
15use example_common::*;
16
17#[embassy::main]
18async fn main(_spawner: Spawner, p: Peripherals) {
19 info!("Hello World!");
20
21 unsafe { Dbgmcu::enable_all() };
22
23 let mut led = Output::new(p.PB15, Level::High, Speed::Low);
24
25 loop {
26 info!("high");
27 unwrap!(led.set_high());
28 Timer::after(Duration::from_millis(500)).await;
29
30 info!("low");
31 unwrap!(led.set_low());
32 Timer::after(Duration::from_millis(500)).await;
33 }
34}
diff --git a/examples/stm32wl55/src/bin/button.rs b/examples/stm32wl55/src/bin/button.rs
new file mode 100644
index 000000000..90212d3d7
--- /dev/null
+++ b/examples/stm32wl55/src/bin/button.rs
@@ -0,0 +1,40 @@
1#![no_std]
2#![no_main]
3#![feature(trait_alias)]
4#![feature(type_alias_impl_trait)]
5#![allow(incomplete_features)]
6
7#[path = "../example_common.rs"]
8mod example_common;
9use embassy_stm32::{
10 dbgmcu::Dbgmcu,
11 gpio::{Input, Level, Output, Pull, Speed},
12 rcc::*,
13};
14use embedded_hal::digital::v2::{InputPin, OutputPin};
15use example_common::*;
16
17use cortex_m_rt::entry;
18
19#[entry]
20fn main() -> ! {
21 info!("Hello World!");
22
23 let mut p = embassy_stm32::init(Default::default());
24
25 unsafe { Dbgmcu::enable_all() };
26
27 let button = Input::new(p.PA0, Pull::Up);
28 let mut led1 = Output::new(p.PB15, Level::High, Speed::Low);
29 let mut led2 = Output::new(p.PB9, Level::High, Speed::Low);
30
31 loop {
32 if button.is_high().unwrap() {
33 led1.set_high().unwrap();
34 led2.set_low().unwrap();
35 } else {
36 led1.set_low().unwrap();
37 led2.set_high().unwrap();
38 }
39 }
40}
diff --git a/examples/stm32wl55/src/example_common.rs b/examples/stm32wl55/src/example_common.rs
new file mode 100644
index 000000000..54d633837
--- /dev/null
+++ b/examples/stm32wl55/src/example_common.rs
@@ -0,0 +1,17 @@
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}