mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-23 20:22:51 +01:00
Include the examples
This commit is contained in:
parent
d90fa95266
commit
6c91ff2d7f
1 changed files with 3 additions and 79 deletions
|
@ -87,89 +87,13 @@ mod app {
|
||||||
# V2.0.0
|
# V2.0.0
|
||||||
|
|
||||||
``` rust
|
``` rust
|
||||||
#![deny(unsafe_code)]
|
{{ #include ../../../../../examples/stm32f3_blinky/src/main.rs }}
|
||||||
#![deny(warnings)]
|
|
||||||
#![no_main]
|
|
||||||
#![no_std]
|
|
||||||
#![feature(type_alias_impl_trait)]
|
|
||||||
|
|
||||||
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 rtic_monotonics::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,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[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_token = rtic_monotonics::create_systick_token!();
|
|
||||||
let mono = Systick::new(cx.core.SYST, 36_000_000, mono_token);
|
|
||||||
|
|
||||||
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().unwrap();
|
|
||||||
|
|
||||||
(
|
|
||||||
Shared {},
|
|
||||||
Local { led, state: false },
|
|
||||||
init::Monotonics(mono),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[task(local = [led, state])]
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## A diff between the two projects
|
## A diff between the two projects
|
||||||
|
|
||||||
|
_Note_: This diff may not be 100% accurate, but it displays the important changes.
|
||||||
|
|
||||||
``` diff
|
``` diff
|
||||||
#![no_main]
|
#![no_main]
|
||||||
#![no_std]
|
#![no_std]
|
||||||
|
|
Loading…
Reference in a new issue