aboutsummaryrefslogtreecommitdiff
path: root/examples/extern_binds.rs
diff options
context:
space:
mode:
authorGravatar Per Lindgren <per.lindgren@ltu.se> 2020-10-24 19:38:49 +0200
committerGravatar Per Lindgren <per.lindgren@ltu.se> 2020-10-29 19:29:46 +0100
commit96cd625223404a3b32a62384055ccd4765f92312 (patch)
treee1190b395650334f834c218ff33583b783f81054 /examples/extern_binds.rs
parentd11b2ddd3559b29480b9bbcf9d5b7836de190f77 (diff)
downloadrtic-96cd625223404a3b32a62384055ccd4765f92312.tar.gz
rtic-96cd625223404a3b32a62384055ccd4765f92312.tar.zst
rtic-96cd625223404a3b32a62384055ccd4765f92312.zip
extern task
Diffstat (limited to 'examples/extern_binds.rs')
-rw-r--r--examples/extern_binds.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/extern_binds.rs b/examples/extern_binds.rs
new file mode 100644
index 00000000..632f4ca0
--- /dev/null
+++ b/examples/extern_binds.rs
@@ -0,0 +1,48 @@
+//! examples/extern_binds.rs
+
+#![deny(unsafe_code)]
+#![deny(warnings)]
+#![no_main]
+#![no_std]
+
+use cortex_m_semihosting::hprintln;
+use panic_semihosting as _;
+
+// Free function implementing the interrupt bound task `foo`.
+fn foo(_: app::foo::Context) {
+ hprintln!("foo called").ok();
+}
+
+#[rtic::app(device = lm3s6965)]
+mod app {
+ use crate::foo;
+ use cortex_m_semihosting::{debug, hprintln};
+ use lm3s6965::Interrupt;
+
+ #[init]
+ fn init(_: init::Context) -> init::LateResources {
+ rtic::pend(Interrupt::UART0);
+
+ hprintln!("init").unwrap();
+
+ init::LateResources {}
+ }
+
+ #[idle]
+ fn idle(_: idle::Context) -> ! {
+ hprintln!("idle").unwrap();
+
+ rtic::pend(Interrupt::UART0);
+
+ debug::exit(debug::EXIT_SUCCESS);
+
+ loop {
+ cortex_m::asm::nop();
+ }
+ }
+
+ extern "Rust" {
+ #[task(binds = UART0)]
+ fn foo(_: foo::Context);
+ }
+}