aboutsummaryrefslogtreecommitdiff
path: root/examples/embassy-stm32g4/src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'examples/embassy-stm32g4/src/bin')
-rw-r--r--examples/embassy-stm32g4/src/bin/blinky.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/embassy-stm32g4/src/bin/blinky.rs b/examples/embassy-stm32g4/src/bin/blinky.rs
new file mode 100644
index 0000000..9cc4899
--- /dev/null
+++ b/examples/embassy-stm32g4/src/bin/blinky.rs
@@ -0,0 +1,61 @@
+#![deny(unsafe_code)]
+#![deny(warnings)]
+#![no_main]
+#![no_std]
+#![feature(type_alias_impl_trait)]
+
+use defmt::*;
+use embassy_stm32::gpio::{Level, Output, Speed};
+use rtic::app;
+use rtic_monotonics::systick::*;
+use {defmt_rtt as _, panic_probe as _};
+
+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
+ let systick_mono_token = rtic_monotonics::create_systick_token!();
+ Systick::start(cx.core.SYST, 25_000_000, systick_mono_token);
+
+ let p = embassy_stm32::init(Default::default());
+ info!("Hello World!");
+
+ let mut led = Output::new(p.PC6, Level::High, Speed::Low);
+ 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 {
+ info!("blink");
+ if state {
+ led.set_high();
+ } else {
+ led.set_low();
+ }
+ state = !state;
+ Systick::delay(1000.millis()).await;
+ }
+ }
+}