From 529455933299e2adc16640b5da55abaeb04e8758 Mon Sep 17 00:00:00 2001
From: Per Lindgren <per.lindgren@ltu.se>
Date: Fri, 19 Apr 2019 18:31:27 +0200
Subject: [PATCH] app9
---
examples/app9.rs | 62 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
create mode 100644 examples/app9.rs
diff --git a/examples/app9.rs b/examples/app9.rs
new file mode 100644
index 0000000..51bfa2f
--- /dev/null
+++ b/examples/app9.rs
@@ -0,0 +1,62 @@
+#![no_main]
+#![no_std]
+use cortex_m_semihosting::hprintln;
+use nrf52832_hal as hal;
+#[allow(unused_imports)]
+use panic_semihosting;
+use rtfm::{app};
+
+use embedded_hal::digital::OutputPin;
+use hal::gpio;
+use hal::gpio::p0::*;
+use hal::gpio::Level;
+use hal::gpio::*;
+use hal::prelude::GpioExt;
+
+const PERIOD : u32 = 64_000_000;
+
+#[app(device = crate::hal::target)]
+const APP: () = {
+ // Late resources
+ // static mut LED: OutputPin = (); <= size not known
+ static mut LED: P0_14<gpio::Output<PushPull>> = ();
+
+ #[init(spawn = [low])]
+ fn init() -> init::LateResources {
+ hprintln!("init").unwrap();
+ let port0 = device.P0.split();
+ let led = port0.p0_14.into_push_pull_output(Level::High);
+ spawn.low().unwrap();
+ init::LateResources { LED : led }
+ }
+
+ #[task(schedule = [high], resources = [LED])]
+ fn low() {
+ toggler(&mut *resources.LED, false);
+
+ schedule.high(
+ scheduled + PERIOD.cycles()
+ ).unwrap();
+ }
+
+ #[task(schedule = [low], resources = [LED])]
+ fn high() {
+ toggler(&mut *resources.LED, true);
+ schedule.low(
+ scheduled + PERIOD.cycles()
+ ).unwrap();
+ }
+
+ extern "C" {
+ fn SWI1_EGU1();
+ }
+};
+
+// Arument is an Output pin
+fn toggler(led : &mut impl OutputPin, state : bool ) {
+ if state {
+ led.set_high();
+ } else {
+ led.set_low();
+ }
+}
\ No newline at end of file
--
GitLab