From cf0097162cb33d77d90ce5cb50f8fb5c24972748 Mon Sep 17 00:00:00 2001
From: Barnaby Walters <barnaby@waterpigs.co.uk>
Date: Sun, 7 Apr 2024 15:19:56 +0200
Subject: [PATCH] [embassy-stm32] added comments explaining multiprio
 interrupts

---
 examples/stm32f0/src/bin/multiprio.rs | 4 ++++
 examples/stm32f3/src/bin/multiprio.rs | 4 ++++
 examples/stm32f4/src/bin/multiprio.rs | 4 ++++
 examples/stm32h7/src/bin/multiprio.rs | 4 ++++
 4 files changed, 16 insertions(+)

diff --git a/examples/stm32f0/src/bin/multiprio.rs b/examples/stm32f0/src/bin/multiprio.rs
index e49951726..e36c0d6c2 100644
--- a/examples/stm32f0/src/bin/multiprio.rs
+++ b/examples/stm32f0/src/bin/multiprio.rs
@@ -126,6 +126,10 @@ fn main() -> ! {
     // Initialize and create handle for devicer peripherals
     let _p = embassy_stm32::init(Default::default());
 
+    // STM32s don’t have software-defined interrupts, so just use any free interrupt vectors which aren’t used
+    // by the rest of your application. In this case we’re using UART1 and UART2, but there’s nothing special
+    // about them. Any otherwise unused interrupt vector would work exactly the same.
+
     // High-priority executor: USART1, priority level 6
     interrupt::USART1.set_priority(Priority::P6);
     let spawner = EXECUTOR_HIGH.start(interrupt::USART1);
diff --git a/examples/stm32f3/src/bin/multiprio.rs b/examples/stm32f3/src/bin/multiprio.rs
index 328447210..3a3059db1 100644
--- a/examples/stm32f3/src/bin/multiprio.rs
+++ b/examples/stm32f3/src/bin/multiprio.rs
@@ -127,6 +127,10 @@ fn main() -> ! {
 
     let _p = embassy_stm32::init(Default::default());
 
+    // STM32s don’t have software-defined interrupts, so just use any free interrupt vectors which aren’t used
+    // by the rest of your application. In this case we’re using UART4 and UART5, but there’s nothing special
+    // about them. Any otherwise unused interrupt vector would work exactly the same.
+
     // High-priority executor: UART4, priority level 6
     interrupt::UART4.set_priority(Priority::P6);
     let spawner = EXECUTOR_HIGH.start(interrupt::UART4);
diff --git a/examples/stm32f4/src/bin/multiprio.rs b/examples/stm32f4/src/bin/multiprio.rs
index 328447210..5a55cd291 100644
--- a/examples/stm32f4/src/bin/multiprio.rs
+++ b/examples/stm32f4/src/bin/multiprio.rs
@@ -127,6 +127,10 @@ fn main() -> ! {
 
     let _p = embassy_stm32::init(Default::default());
 
+    // STM32s don’t have software-defined interrupts, so just use any free interrupt vectors which aren’t used
+    // by the rest of your application. In this case we’re using UART6 and UART7, but there’s nothing special
+    // about them. Any otherwise unused interrupt vector would work exactly the same.
+
     // High-priority executor: UART4, priority level 6
     interrupt::UART4.set_priority(Priority::P6);
     let spawner = EXECUTOR_HIGH.start(interrupt::UART4);
diff --git a/examples/stm32h7/src/bin/multiprio.rs b/examples/stm32h7/src/bin/multiprio.rs
index 73f8dd092..f9a00f806 100644
--- a/examples/stm32h7/src/bin/multiprio.rs
+++ b/examples/stm32h7/src/bin/multiprio.rs
@@ -127,6 +127,10 @@ fn main() -> ! {
 
     let _p = embassy_stm32::init(Default::default());
 
+    // STM32s don’t have software-defined interrupts, so just use any free interrupt vectors which aren’t used
+    // by the rest of your application. In this case we’re using UART6 and UART7, but there’s nothing special
+    // about them. Any otherwise unused interrupt vector would work exactly the same.
+
     // High-priority executor: UART4, priority level 6
     interrupt::UART4.set_priority(Priority::P6);
     let spawner = EXECUTOR_HIGH.start(interrupt::UART4);