aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32f3/src
diff options
context:
space:
mode:
authorWillaWillNot <[email protected]>2025-11-20 16:24:15 -0500
committerWillaWillNot <[email protected]>2025-11-21 16:36:15 -0500
commit623623a25f213f76de932eaf4458c3120823d205 (patch)
treea1039bcdb29488180f4fe669f16ac0b33370404e /examples/stm32f3/src
parentde4d7f56473df58d9b3fa8ec4917ab86550005ae (diff)
Updated documentation, fixed EXTI definition issues with chips that have touch sensing, updated examples, added generation of convenience method to bind_interrupts for easier type erasure
Diffstat (limited to 'examples/stm32f3/src')
-rw-r--r--examples/stm32f3/src/bin/button_events.rs16
-rw-r--r--examples/stm32f3/src/bin/button_exti.rs16
2 files changed, 28 insertions, 4 deletions
diff --git a/examples/stm32f3/src/bin/button_events.rs b/examples/stm32f3/src/bin/button_events.rs
index 99957a641..78c6592ee 100644
--- a/examples/stm32f3/src/bin/button_events.rs
+++ b/examples/stm32f3/src/bin/button_events.rs
@@ -11,13 +11,20 @@
11 11
12use defmt::*; 12use defmt::*;
13use embassy_executor::Spawner; 13use embassy_executor::Spawner;
14use embassy_stm32::exti::ExtiInput; 14use embassy_stm32::bind_interrupts;
15use embassy_stm32::exti::{self, ExtiInput};
15use embassy_stm32::gpio::{Level, Output, Pull, Speed}; 16use embassy_stm32::gpio::{Level, Output, Pull, Speed};
17use embassy_stm32::interrupt;
16use embassy_sync::blocking_mutex::raw::ThreadModeRawMutex; 18use embassy_sync::blocking_mutex::raw::ThreadModeRawMutex;
17use embassy_sync::channel::Channel; 19use embassy_sync::channel::Channel;
18use embassy_time::{Duration, Timer, with_timeout}; 20use embassy_time::{Duration, Timer, with_timeout};
19use {defmt_rtt as _, panic_probe as _}; 21use {defmt_rtt as _, panic_probe as _};
20 22
23bind_interrupts!(
24 pub struct Irqs{
25 EXTI0 => exti::InterruptHandler<interrupt::typelevel::EXTI0>;
26});
27
21struct Leds<'a> { 28struct Leds<'a> {
22 leds: [Output<'a>; 8], 29 leds: [Output<'a>; 8],
23 direction: i8, 30 direction: i8,
@@ -99,7 +106,12 @@ static CHANNEL: Channel<ThreadModeRawMutex, ButtonEvent, 4> = Channel::new();
99#[embassy_executor::main] 106#[embassy_executor::main]
100async fn main(spawner: Spawner) { 107async fn main(spawner: Spawner) {
101 let p = embassy_stm32::init(Default::default()); 108 let p = embassy_stm32::init(Default::default());
102 let button = ExtiInput::new(p.PA0, p.EXTI0, Pull::Down); 109 let button = ExtiInput::new(
110 p.PA0,
111 p.EXTI0,
112 Pull::Down,
113 Irqs::as_any::<interrupt::typelevel::EXTI0, exti::InterruptHandler<interrupt::typelevel::EXTI0>>(),
114 );
103 info!("Press the USER button..."); 115 info!("Press the USER button...");
104 let leds = [ 116 let leds = [
105 Output::new(p.PE9, Level::Low, Speed::Low), 117 Output::new(p.PE9, Level::Low, Speed::Low),
diff --git a/examples/stm32f3/src/bin/button_exti.rs b/examples/stm32f3/src/bin/button_exti.rs
index a55530e0e..d6d613447 100644
--- a/examples/stm32f3/src/bin/button_exti.rs
+++ b/examples/stm32f3/src/bin/button_exti.rs
@@ -3,16 +3,28 @@
3 3
4use defmt::*; 4use defmt::*;
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::exti::ExtiInput; 6use embassy_stm32::bind_interrupts;
7use embassy_stm32::exti::{self, ExtiInput};
7use embassy_stm32::gpio::Pull; 8use embassy_stm32::gpio::Pull;
9use embassy_stm32::interrupt;
8use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
9 11
12bind_interrupts!(
13 pub struct Irqs{
14 EXTI0 => exti::InterruptHandler<interrupt::typelevel::EXTI0>;
15});
16
10#[embassy_executor::main] 17#[embassy_executor::main]
11async fn main(_spawner: Spawner) { 18async fn main(_spawner: Spawner) {
12 let p = embassy_stm32::init(Default::default()); 19 let p = embassy_stm32::init(Default::default());
13 info!("Hello World!"); 20 info!("Hello World!");
14 21
15 let mut button = ExtiInput::new(p.PA0, p.EXTI0, Pull::Down); 22 let mut button = ExtiInput::new(
23 p.PA0,
24 p.EXTI0,
25 Pull::Down,
26 Irqs::as_any::<interrupt::typelevel::EXTI0, exti::InterruptHandler<interrupt::typelevel::EXTI0>>(),
27 );
16 28
17 info!("Press the USER button..."); 29 info!("Press the USER button...");
18 30