rtic/examples/embassy-stm32g4/src/bin/blinky.rs

61 lines
1.4 KiB
Rust
Raw Permalink Normal View History

#![deny(unsafe_code)]
#![deny(warnings)]
#![no_main]
#![no_std]
use embassy_stm32::gpio::{Level, Output, Speed};
use rtic::app;
use rtic_monotonics::systick::prelude::*;
use {defmt_rtt as _, panic_probe as _};
systick_monotonic!(Mono, 1_000);
pub mod pac {
pub use embassy_stm32::pac::Interrupt as interrupt;
pub use embassy_stm32::pac::*;
}
#[app(device = pac, peripherals = false, dispatchers = [SPI1])]
mod app {
use super::*;
#[shared]
struct Shared {}
#[local]
struct Local {}
#[init]
fn init(cx: init::Context) -> (Shared, Local) {
// Initialize the systick interrupt & obtain the token to prove that we did
Mono::start(cx.core.SYST, 25_000_000);
let p = embassy_stm32::init(Default::default());
defmt::info!("Hello World!");
let mut led = Output::new(p.PC6, Level::High, Speed::Low);
defmt::info!("high");
led.set_high();
// Schedule the blinking task
blink::spawn(led).ok();
(Shared {}, Local {})
}
#[task()]
async fn blink(_cx: blink::Context, mut led: Output<'static, embassy_stm32::peripherals::PC6>) {
let mut state = true;
loop {
defmt::info!("blink");
if state {
led.set_high();
} else {
led.set_low();
}
state = !state;
Mono::delay(1000.millis()).await;
}
}
}