aboutsummaryrefslogtreecommitdiff
path: root/book/en/src/by-example/app_init.md
diff options
context:
space:
mode:
authorPer Lindgren <per.lindgren@ltu.se>2023-01-28 21:57:43 +0100
committerHenrik Tjäder <henrik@tjaders.com>2023-03-01 00:33:39 +0100
commit1f51b10297e9cbb4797aa1ed8be6a2b84c9f2e07 (patch)
treefaab2e5fd8a3432ac5b1f7be3bd9372d8063f8c5 /book/en/src/by-example/app_init.md
parentd0c51269608c18a105fd010f070bd9af6f443c60 (diff)
Book: Major rework for RTIC v2
Diffstat (limited to 'book/en/src/by-example/app_init.md')
-rw-r--r--book/en/src/by-example/app_init.md25
1 files changed, 9 insertions, 16 deletions
diff --git a/book/en/src/by-example/app_init.md b/book/en/src/by-example/app_init.md
index 5bf6200..62fb55b 100644
--- a/book/en/src/by-example/app_init.md
+++ b/book/en/src/by-example/app_init.md
@@ -1,35 +1,28 @@
# App initialization and the `#[init]` task
An RTIC application requires an `init` task setting up the system. The corresponding `init` function must have the
-signature `fn(init::Context) -> (Shared, Local, init::Monotonics)`, where `Shared` and `Local` are resource
+signature `fn(init::Context) -> (Shared, Local)`, where `Shared` and `Local` are the resource
structures defined by the user.
-The `init` task executes after system reset, [after an optionally defined `pre-init` code section][pre-init] and an always occurring internal RTIC
-initialization.
-
+The `init` task executes after system reset (after the optionally defined [pre-init] and internal RTIC
+initialization). The `init` task runs *with interrupts disabled* and has exclusive access to Cortex-M (the
+`bare_metal::CriticalSection` token is available as `cs`) while device specific peripherals are available through
+the `core` and `device` fields of `init::Context`.
[pre-init]: https://docs.rs/cortex-m-rt/latest/cortex_m_rt/attr.pre_init.html
-
-The `init` and optional `pre-init` tasks runs *with interrupts disabled* and have exclusive access to Cortex-M (the
-`bare_metal::CriticalSection` token is available as `cs`).
-
-Device specific peripherals are available through the `core` and `device` fields of `init::Context`.
-
## Example
-The example below shows the types of the `core`, `device` and `cs` fields, and showcases the use of a `local`
-variable with `'static` lifetime.
-Such variables can be delegated from the `init` task to other tasks of the RTIC application.
+The example below shows the types of the `core`, `device` and `cs` fields, and showcases the use of a `local` variable with `'static` lifetime. Such variables can be delegated from the `init` task to other tasks of the RTIC application.
-The `device` field is only available when the `peripherals` argument is set to the default value `true`.
+The `device` field is available when the `peripherals` argument is set to the default value `true`.
In the rare case you want to implement an ultra-slim application you can explicitly set `peripherals` to `false`.
``` rust
-{{#include ../../../../examples/init.rs}}
+{{#include ../../../../rtic/examples/init.rs}}
```
Running the example will print `init` to the console and then exit the QEMU process.
``` console
$ cargo run --target thumbv7m-none-eabi --example init
-{{#include ../../../../ci/expected/init.run}}
+{{#include ../../../../rtic/ci/expected/init.run}}
```