diff options
Diffstat (limited to 'book/en/src/by-example/app_idle.md')
| -rw-r--r-- | book/en/src/by-example/app_idle.md | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/book/en/src/by-example/app_idle.md b/book/en/src/by-example/app_idle.md index c0b4139..ea193a2 100644 --- a/book/en/src/by-example/app_idle.md +++ b/book/en/src/by-example/app_idle.md @@ -1,8 +1,8 @@ # The background task `#[idle]` -A function marked with the `idle` attribute can optionally appear in the module. This becomes the special *idle task* and must have signature `fn(idle::Context) -> !`. +A function marked with the `idle` attribute can optionally appear in the module. This becomes the special _idle task_ and must have signature `fn(idle::Context) -> !`. -When present, the runtime will execute the `idle` task after `init`. Unlike `init`, `idle` will run *with interrupts enabled* and must never return, as the `-> !` function signature indicates. +When present, the runtime will execute the `idle` task after `init`. Unlike `init`, `idle` will run _with interrupts enabled_ and must never return, as the `-> !` function signature indicates. [The Rust type `!` means “never”][nevertype]. [nevertype]: https://doc.rust-lang.org/core/primitive.never.html @@ -11,25 +11,25 @@ Like in `init`, locally declared resources will have `'static` lifetimes that ar The example below shows that `idle` runs after `init`. -``` rust,noplayground -{{#include ../../../../rtic/examples/idle.rs}} +```rust,noplayground +{{#include ../../../../examples/lm3s6965/examples/idle.rs}} ``` -``` console -$ cargo run --target thumbv7m-none-eabi --example idle +```console +$ cargo xtask qemu --verbose --example idle ``` -``` console -{{#include ../../../../rtic/ci/expected/idle.run}} +```console +{{#include ../../../../ci/expected/lm3s6965/idle.run}} ``` By default, the RTIC `idle` task does not try to optimize for any specific targets. A common useful optimization is to enable the [SLEEPONEXIT] and allow the MCU to enter sleep when reaching `idle`. ->**Caution**: some hardware unless configured disables the debug unit during sleep mode. +> **Caution**: some hardware unless configured disables the debug unit during sleep mode. > ->Consult your hardware specific documentation as this is outside the scope of RTIC. +> Consult your hardware specific documentation as this is outside the scope of RTIC. The following example shows how to enable sleep by setting the [`SLEEPONEXIT`][SLEEPONEXIT] and providing a custom `idle` task replacing the default [`nop()`][NOP] with [`wfi()`][WFI]. @@ -38,16 +38,16 @@ The following example shows how to enable sleep by setting the [WFI]: https://developer.arm.com/documentation/dui0662/b/The-Cortex-M0--Instruction-Set/Miscellaneous-instructions/WFI [NOP]: https://developer.arm.com/documentation/dui0662/b/The-Cortex-M0--Instruction-Set/Miscellaneous-instructions/NOP -``` rust,noplayground -{{#include ../../../../rtic/examples/idle-wfi.rs}} +```rust,noplayground +{{#include ../../../../examples/lm3s6965/examples/idle-wfi.rs}} ``` -``` console -$ cargo run --target thumbv7m-none-eabi --example idle-wfi +```console +$ cargo xtask qemu --verbose --example idle-wfi ``` -``` console -{{#include ../../../../rtic/ci/expected/idle-wfi.run}} +```console +{{#include ../../../../ci/expected/lm3s6965/idle-wfi.run}} ``` -> **Notice**: The `idle` task cannot be used together with *software* tasks running at priority zero. The reason is that `idle` is running as a non-returning Rust function at priority zero. Thus there would be no way for an executor at priority zero to give control to *software* tasks at the same priority. +> **Notice**: The `idle` task cannot be used together with _software_ tasks running at priority zero. The reason is that `idle` is running as a non-returning Rust function at priority zero. Thus there would be no way for an executor at priority zero to give control to _software_ tasks at the same priority. |
