aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-11-20 23:14:02 +0000
committerGitHub <[email protected]>2024-11-20 23:14:02 +0000
commit66756af2f07cb6327fb7b9266dee2f5e1e2c9f98 (patch)
tree1113df882b7928608311c2f31153662ef1be9808 /embassy-stm32
parent851aa9cfaa1427f2f7a8e1203e58e9ec8dd93575 (diff)
parent8ebe059ecb311ee949f92dde33f2cb8d972b0f7b (diff)
Merge pull request #3547 from bugadani/callback
Executor: Only set callback once
Diffstat (limited to 'embassy-stm32')
-rw-r--r--embassy-stm32/src/low_power.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/embassy-stm32/src/low_power.rs b/embassy-stm32/src/low_power.rs
index a779b8a09..d74221864 100644
--- a/embassy-stm32/src/low_power.rs
+++ b/embassy-stm32/src/low_power.rs
@@ -155,7 +155,9 @@ impl Executor {
155 time_driver: get_driver(), 155 time_driver: get_driver(),
156 }); 156 });
157 157
158 EXECUTOR.as_mut().unwrap() 158 let executor = EXECUTOR.as_mut().unwrap();
159
160 executor
159 }) 161 })
160 } 162 }
161 163
@@ -241,11 +243,15 @@ impl Executor {
241 /// 243 ///
242 /// This function never returns. 244 /// This function never returns.
243 pub fn run(&'static mut self, init: impl FnOnce(Spawner)) -> ! { 245 pub fn run(&'static mut self, init: impl FnOnce(Spawner)) -> ! {
244 init(unsafe { EXECUTOR.as_mut().unwrap() }.inner.spawner()); 246 let executor = unsafe { EXECUTOR.as_mut().unwrap() };
247 unsafe {
248 executor.inner.initialize();
249 }
250 init(executor.inner.spawner());
245 251
246 loop { 252 loop {
247 unsafe { 253 unsafe {
248 EXECUTOR.as_mut().unwrap().inner.poll(); 254 executor.inner.poll();
249 self.configure_pwr(); 255 self.configure_pwr();
250 asm!("wfe"); 256 asm!("wfe");
251 }; 257 };