diff options
| author | datdenkikniet <jcdra1@gmail.com> | 2023-04-22 21:27:26 +0200 |
|---|---|---|
| committer | datdenkikniet <jcdra1@gmail.com> | 2023-05-11 19:20:58 +0200 |
| commit | 3d97c9e431d7fcb20b1b30bc15c34ccffee03c79 (patch) | |
| tree | 6842b788361e247cc50423bee972cc7a3c6ba974 /book/en/src/migration/migration_v2/complete_example.md | |
| parent | ed465b0c3b8b4c588f5cc7945af79a504f928cc8 (diff) | |
Move deprecated migration guides to deprecated folder
Diffstat (limited to 'book/en/src/migration/migration_v2/complete_example.md')
| -rw-r--r-- | book/en/src/migration/migration_v2/complete_example.md | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/book/en/src/migration/migration_v2/complete_example.md b/book/en/src/migration/migration_v2/complete_example.md deleted file mode 100644 index b68f1ef..0000000 --- a/book/en/src/migration/migration_v2/complete_example.md +++ /dev/null @@ -1,169 +0,0 @@ -# A complete example of migration - -Below you can find the code for the implementation of the `stm32f3_blinky` example for v1.0.x and for v2.0.0. Further down, a diff is displayed. - -# v1.0.X - -```rust -#![deny(unsafe_code)] -#![deny(warnings)] -#![no_main] -#![no_std] - -use panic_rtt_target as _; -use rtic::app; -use rtt_target::{rprintln, rtt_init_print}; -use stm32f3xx_hal::gpio::{Output, PushPull, PA5}; -use stm32f3xx_hal::prelude::*; -use systick_monotonic::{fugit::Duration, Systick}; - -#[app(device = stm32f3xx_hal::pac, peripherals = true, dispatchers = [SPI1])] -mod app { - use super::*; - - #[shared] - struct Shared {} - - #[local] - struct Local { - led: PA5<Output<PushPull>>, - state: bool, - } - - #[monotonic(binds = SysTick, default = true)] - type MonoTimer = Systick<1000>; - - #[init] - fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) { - // Setup clocks - let mut flash = cx.device.FLASH.constrain(); - let mut rcc = cx.device.RCC.constrain(); - - let mono = Systick::new(cx.core.SYST, 36_000_000); - - rtt_init_print!(); - rprintln!("init"); - - let _clocks = rcc - .cfgr - .use_hse(8.MHz()) - .sysclk(36.MHz()) - .pclk1(36.MHz()) - .freeze(&mut flash.acr); - - // Setup LED - let mut gpioa = cx.device.GPIOA.split(&mut rcc.ahb); - let mut led = gpioa - .pa5 - .into_push_pull_output(&mut gpioa.moder, &mut gpioa.otyper); - led.set_high().unwrap(); - - // Schedule the blinking task - blink::spawn_after(Duration::<u64, 1, 1000>::from_ticks(1000)).unwrap(); - - ( - Shared {}, - Local { led, state: false }, - init::Monotonics(mono), - ) - } - - #[task(local = [led, state])] - fn blink(cx: blink::Context) { - rprintln!("blink"); - if *cx.local.state { - cx.local.led.set_high().unwrap(); - *cx.local.state = false; - } else { - cx.local.led.set_low().unwrap(); - *cx.local.state = true; - } - blink::spawn_after(Duration::<u64, 1, 1000>::from_ticks(1000)).unwrap(); - } -} - -``` - -# V2.0.0 - -``` rust -{{ #include ../../../../../examples/stm32f3_blinky/src/main.rs }} -``` - -## A diff between the two projects - -_Note_: This diff may not be 100% accurate, but it displays the important changes. - -``` diff -#![no_main] - #![no_std] -+#![feature(type_alias_impl_trait)] - - use panic_rtt_target as _; - use rtic::app; - use stm32f3xx_hal::gpio::{Output, PushPull, PA5}; - use stm32f3xx_hal::prelude::*; --use systick_monotonic::{fugit::Duration, Systick}; -+use rtic_monotonics::Systick; - - #[app(device = stm32f3xx_hal::pac, peripherals = true, dispatchers = [SPI1])] - mod app { -@@ -20,16 +21,14 @@ mod app { - state: bool, - } - -- #[monotonic(binds = SysTick, default = true)] -- type MonoTimer = Systick<1000>; -- - #[init] - fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) { - // Setup clocks - let mut flash = cx.device.FLASH.constrain(); - let mut rcc = cx.device.RCC.constrain(); - -- let mono = Systick::new(cx.core.SYST, 36_000_000); -+ let mono_token = rtic_monotonics::create_systick_token!(); -+ let mono = Systick::new(cx.core.SYST, 36_000_000, mono_token); - - let _clocks = rcc - .cfgr -@@ -46,7 +45,7 @@ mod app { - led.set_high().unwrap(); - - // Schedule the blinking task -- blink::spawn_after(Duration::<u64, 1, 1000>::from_ticks(1000)).unwrap(); -+ blink::spawn().unwrap(); - - ( - Shared {}, -@@ -56,14 +55,18 @@ mod app { - } - - #[task(local = [led, state])] -- fn blink(cx: blink::Context) { -- rprintln!("blink"); -- if *cx.local.state { -- cx.local.led.set_high().unwrap(); -- *cx.local.state = false; -- } else { -- cx.local.led.set_low().unwrap(); -- *cx.local.state = true; -- blink::spawn_after(Duration::<u64, 1, 1000>::from_ticks(1000)).unwrap(); -- } -+ async fn blink(cx: blink::Context) { -+ loop { -+ // A task is now allowed to run forever, provided that -+ // there is an `await` somewhere in the loop. -+ SysTick::delay(1000.millis()).await; -+ rprintln!("blink"); -+ if *cx.local.state { -+ cx.local.led.set_high().unwrap(); -+ *cx.local.state = false; -+ } else { -+ cx.local.led.set_low().unwrap(); -+ *cx.local.state = true; -+ } -+ } -+ } - } -```
\ No newline at end of file |
