diff options
Diffstat (limited to 'docs/modules/ROOT/pages/basic_application.adoc')
| -rw-r--r-- | docs/modules/ROOT/pages/basic_application.adoc | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/docs/modules/ROOT/pages/basic_application.adoc b/docs/modules/ROOT/pages/basic_application.adoc index 53aaa3d7d..c2849927a 100644 --- a/docs/modules/ROOT/pages/basic_application.adoc +++ b/docs/modules/ROOT/pages/basic_application.adoc | |||
| @@ -2,8 +2,9 @@ | |||
| 2 | 2 | ||
| 3 | So you've got one of the xref:examples.adoc[examples] running, but what now? Let's go through a simple Embassy application for the nRF52 DK to understand it better. | 3 | So you've got one of the xref:examples.adoc[examples] running, but what now? Let's go through a simple Embassy application for the nRF52 DK to understand it better. |
| 4 | 4 | ||
| 5 | == Main | ||
| 5 | 6 | ||
| 6 | == The main | 7 | The full example can be found link:https://github.com/embassy-rs/embassy/tree/book-poc/docs/modules/ROOT/examples/basic[here]. |
| 7 | 8 | ||
| 8 | === Rust Nightly | 9 | === Rust Nightly |
| 9 | 10 | ||
| @@ -11,9 +12,7 @@ The first thing you'll notice is a few declarations stating that Embassy require | |||
| 11 | 12 | ||
| 12 | [source,rust] | 13 | [source,rust] |
| 13 | ---- | 14 | ---- |
| 14 | #![no_std] | 15 | include::example$basic/src/main.rs[lines="1..3"] |
| 15 | #![no_main] | ||
| 16 | #![feature(type_alias_impl_trait)] | ||
| 17 | ---- | 16 | ---- |
| 18 | 17 | ||
| 19 | === Dealing with errors | 18 | === Dealing with errors |
| @@ -22,8 +21,7 @@ Then, what follows are some declarations on how to deal with panics and faults. | |||
| 22 | 21 | ||
| 23 | [source,rust] | 22 | [source,rust] |
| 24 | ---- | 23 | ---- |
| 25 | use defmt_rtt as _; | 24 | include::example$basic/src/main.rs[lines="5..6"] |
| 26 | use panic_probe as _; | ||
| 27 | ---- | 25 | ---- |
| 28 | 26 | ||
| 29 | === Task declaration | 27 | === Task declaration |
| @@ -32,15 +30,7 @@ After a bit of import declaration, the tasks run by the application should be de | |||
| 32 | 30 | ||
| 33 | [source,rust] | 31 | [source,rust] |
| 34 | ---- | 32 | ---- |
| 35 | #[embassy::task] | 33 | include::example$basic/src/main.rs[lines="16..24"] |
| 36 | async fn blinker(led: Output<'static, P0_13>, interval: Duration) { | ||
| 37 | loop { | ||
| 38 | let _ = led.set_high(); | ||
| 39 | Timer::after(interval).await; | ||
| 40 | let _ = led.set_low(); | ||
| 41 | Timer::after(interval).await; | ||
| 42 | } | ||
| 43 | } | ||
| 44 | ---- | 34 | ---- |
| 45 | 35 | ||
| 46 | An embassy task must be declared `async`, and may NOT take generic arguments. In this case, we are handed the LED that should be blinked and the interval of the blinking. | 36 | An embassy task must be declared `async`, and may NOT take generic arguments. In this case, we are handed the LED that should be blinked and the interval of the blinking. |
| @@ -53,13 +43,9 @@ The main entry point of an Embassy application is defined using the `#[embassy:: | |||
| 53 | 43 | ||
| 54 | The `Spawner` is the way the main application spawns other tasks. The `Peripherals` type holds all peripherals that the application may use. In this case, we want to configure one of the pins as a GPIO output driving the LED: | 44 | The `Spawner` is the way the main application spawns other tasks. The `Peripherals` type holds all peripherals that the application may use. In this case, we want to configure one of the pins as a GPIO output driving the LED: |
| 55 | 45 | ||
| 56 | [source, rust] | 46 | [source,rust] |
| 57 | ---- | 47 | ---- |
| 58 | #[embassy::main] | 48 | include::example$basic/src/main.rs[lines="26..30"] |
| 59 | async fn main(spawner: Spawner, p: Peripherals) { | ||
| 60 | let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard); | ||
| 61 | let _ = spawner.spawn(blinker(led, Duration::from_millis(300))); | ||
| 62 | } | ||
| 63 | ---- | 49 | ---- |
| 64 | 50 | ||
| 65 | 51 | ||
| @@ -78,7 +64,7 @@ The project definition needs to contain the embassy dependencies: | |||
| 78 | 64 | ||
| 79 | [source,toml] | 65 | [source,toml] |
| 80 | ---- | 66 | ---- |
| 81 | include::example$examples/nrf/Cargo.toml[lines="9..11"] | 67 | include::example$basic/Cargo.toml[lines="8..10"] |
| 82 | ---- | 68 | ---- |
| 83 | 69 | ||
| 84 | Depending on your microcontroller, you may need to replace `embassy-nrf` with something else (`embassy-stm32` for STM32. Remember to update feature flags as well). | 70 | Depending on your microcontroller, you may need to replace `embassy-nrf` with something else (`embassy-stm32` for STM32. Remember to update feature flags as well). |
