aboutsummaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorGravatar bors[bot] <26634292+bors[bot]@users.noreply.github.com> 2021-12-15 05:46:18 +0000
committerGravatar GitHub <noreply@github.com> 2021-12-15 05:46:18 +0000
commit37facfb5bf9aca11c43868cb8880b12b9f6b336a (patch)
tree7e501c06dba421f6874dc5879e70192cedb4321a /macros
parent235484565d706d362f37c8bd388dbfff78401e8a (diff)
parentd81a4da6fb759c5561eacf4d99d953526e1ee895 (diff)
downloadrtic-37facfb5bf9aca11c43868cb8880b12b9f6b336a.tar.gz
rtic-37facfb5bf9aca11c43868cb8880b12b9f6b336a.tar.zst
rtic-37facfb5bf9aca11c43868cb8880b12b9f6b336a.zip
Merge #562
562: Replace default WFI with simpler NOP r=korken89 a=AfoHT As noted by #561 there are multiple issues with various hardware implementations and debugging together with sleep modes. As RTIC strives to be a generic framework (even though this is an implementation targeting cortex-m) the decision having `WFI` as the default `idle` task causes issues in some hardware, raising the barrier to entry. This changes the default behaviour to do a simple `NOP` instead, adding documentation how to provide a custom `idle` task achieving the old default behaviour. Also removes the automatic setting of SLEEPONEXIT bit when no `idle` was provided, delegating this to the user. This was discussed on the weekly meeting 2021-12-14 and this was the favoured solution. Fixes #561 Co-authored-by: Henrik Tjäder <henrik@grepit.se>
Diffstat (limited to 'macros')
-rw-r--r--macros/src/codegen/idle.rs2
-rw-r--r--macros/src/codegen/pre_init.rs7
2 files changed, 1 insertions, 8 deletions
diff --git a/macros/src/codegen/idle.rs b/macros/src/codegen/idle.rs
index d6539316..0dededa4 100644
--- a/macros/src/codegen/idle.rs
+++ b/macros/src/codegen/idle.rs
@@ -85,7 +85,7 @@ pub fn codegen(
vec![],
None,
quote!(loop {
- rtic::export::wfi()
+ rtic::export::nop()
}),
)
}
diff --git a/macros/src/codegen/pre_init.rs b/macros/src/codegen/pre_init.rs
index 42cc0552..7aaf20fc 100644
--- a/macros/src/codegen/pre_init.rs
+++ b/macros/src/codegen/pre_init.rs
@@ -122,12 +122,5 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
));
}
}
-
- // If there's no user `#[idle]` then optimize returning from interrupt handlers
- if app.idle.is_none() {
- // Set SLEEPONEXIT bit to enter sleep mode when returning from ISR
- stmts.push(quote!(core.SCB.scr.modify(|r| r | 1 << 1);));
- }
-
stmts
}