diff options
| author | Finomnis <Finomnis@users.noreply.github.com> | 2024-04-11 00:00:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-10 22:00:38 +0000 |
| commit | 8c23e178f3838bcdd13662a2ffefd39ec144e869 (patch) | |
| tree | f2d2cefcd6bb2876e74ee6035b5489a4a2d9590f /examples | |
| parent | e4cc5fd17b8a2df332af0ee25c8bd7092e66afb0 (diff) | |
Monotonic rewrite (#874)
* Rework timer_queue and monotonic architecture
Goals:
* make Monotonic purely internal
* make Monotonic purely tick passed, no fugit involved
* create a wrapper struct in the user's code via a macro that then
converts the "now" from the tick based monotonic to a fugit based
timestamp
We need to proxy the delay functions of the timer queue anyway,
so we could simply perform the conversion in those proxy functions.
* Update cargo.lock
* Update readme of rtic-time
* CI: ESP32: Redact esp_image: Too volatile
* Fixup: Changelog double entry rebase mistake
---------
Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
Diffstat (limited to 'examples')
26 files changed, 1022 insertions, 203 deletions
diff --git a/examples/embassy-stm32g4/src/bin/blinky.rs b/examples/embassy-stm32g4/src/bin/blinky.rs index 6855b1e..617aa66 100644 --- a/examples/embassy-stm32g4/src/bin/blinky.rs +++ b/examples/embassy-stm32g4/src/bin/blinky.rs @@ -5,9 +5,11 @@ use embassy_stm32::gpio::{Level, Output, Speed}; use rtic::app; -use rtic_monotonics::systick::*; +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::*; @@ -26,8 +28,7 @@ mod app { #[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); + Mono::start(cx.core.SYST, 25_000_000); let p = embassy_stm32::init(Default::default()); defmt::info!("Hello World!"); @@ -53,7 +54,7 @@ mod app { led.set_low(); } state = !state; - Systick::delay(1000.millis()).await; + Mono::delay(1000.millis()).await; } } } diff --git a/examples/esp32c3/runner.sh b/examples/esp32c3/runner.sh index 8b61068..3310aca 100755 --- a/examples/esp32c3/runner.sh +++ b/examples/esp32c3/runner.sh @@ -26,4 +26,6 @@ sleep 3s # Kill QEMU nicely by sending 'q' (quit) over tcp echo q | nc -N 127.0.0.1 55555 -cat "$logfile" +# Output that will be compared, remove the esp_image segments as they change +# between runs +cat "$logfile" | sed 's/esp_image: .*$/esp_image: REDACTED/' diff --git a/examples/lm3s6965/Cargo.lock b/examples/lm3s6965/Cargo.lock index 076a156..848a06f 100644 --- a/examples/lm3s6965/Cargo.lock +++ b/examples/lm3s6965/Cargo.lock @@ -362,7 +362,6 @@ dependencies = [ "critical-section", "rtic-core", "rtic-macros", - "rtic-monotonics", ] [[package]] @@ -392,12 +391,11 @@ dependencies = [ [[package]] name = "rtic-monotonics" -version = "1.5.0" +version = "2.0.0" dependencies = [ "atomic-polyfill", "cfg-if", "cortex-m", - "embedded-hal 1.0.0", "fugit", "rtic-time", ] @@ -417,9 +415,12 @@ dependencies = [ [[package]] name = "rtic-time" -version = "1.3.0" +version = "2.0.0" dependencies = [ "critical-section", + "embedded-hal 1.0.0", + "embedded-hal-async", + "fugit", "futures-util", "rtic-common", ] diff --git a/examples/lm3s6965/examples/async-delay.rs b/examples/lm3s6965/examples/async-delay.rs index 9ccfc02..0f151cb 100644 --- a/examples/lm3s6965/examples/async-delay.rs +++ b/examples/lm3s6965/examples/async-delay.rs @@ -11,7 +11,9 @@ use panic_semihosting as _; #[rtic::app(device = lm3s6965, dispatchers = [SSI0, UART0], peripherals = true)] mod app { use cortex_m_semihosting::{debug, hprintln}; - use rtic_monotonics::systick::*; + use rtic_monotonics::systick::prelude::*; + + systick_monotonic!(Mono, 100); #[shared] struct Shared {} @@ -23,8 +25,7 @@ mod app { fn init(cx: init::Context) -> (Shared, Local) { hprintln!("init"); - let systick_token = rtic_monotonics::create_systick_token!(); - Systick::start(cx.core.SYST, 12_000_000, systick_token); + Mono::start(cx.core.SYST, 12_000_000); foo::spawn().ok(); bar::spawn().ok(); @@ -36,21 +37,21 @@ mod app { #[task] async fn foo(_cx: foo::Context) { hprintln!("hello from foo"); - Systick::delay(100.millis()).await; + Mono::delay(100.millis()).await; hprintln!("bye from foo"); } #[task] async fn bar(_cx: bar::Context) { hprintln!("hello from bar"); - Systick::delay(200.millis()).await; + Mono::delay(200.millis()).await; hprintln!("bye from bar"); } #[task] async fn baz(_cx: baz::Context) { hprintln!("hello from baz"); - Systick::delay(300.millis()).await; + Mono::delay(300.millis()).await; hprintln!("bye from baz"); debug::exit(debug::EXIT_SUCCESS); diff --git a/examples/lm3s6965/examples/async-timeout.rs b/examples/lm3s6965/examples/async-timeout.rs index e5e129f..169b132 100644 --- a/examples/lm3s6965/examples/async-timeout.rs +++ b/examples/lm3s6965/examples/async-timeout.rs @@ -8,13 +8,13 @@ use cortex_m_semihosting::{debug, hprintln}; use panic_semihosting as _; -use rtic_monotonics::systick::*; +use rtic_monotonics::systick::prelude::*; +systick_monotonic!(Mono, 100); #[rtic::app(device = lm3s6965, dispatchers = [SSI0, UART0], peripherals = true)] mod app { use super::*; use futures::{future::FutureExt, select_biased}; - use rtic_monotonics::Monotonic; #[shared] struct Shared {} @@ -27,8 +27,7 @@ mod app { fn init(cx: init::Context) -> (Shared, Local) { hprintln!("init"); - let systick_token = rtic_monotonics::create_systick_token!(); - Systick::start(cx.core.SYST, 12_000_000, systick_token); + Mono::start(cx.core.SYST, 12_000_000); // ANCHOR_END: init foo::spawn().ok(); @@ -42,19 +41,19 @@ mod app { // Call hal with short relative timeout using `select_biased` select_biased! { v = hal_get(1).fuse() => hprintln!("hal returned {}", v), - _ = Systick::delay(200.millis()).fuse() => hprintln!("timeout", ), // this will finish first + _ = Mono::delay(200.millis()).fuse() => hprintln!("timeout", ), // this will finish first } // Call hal with long relative timeout using `select_biased` select_biased! { v = hal_get(1).fuse() => hprintln!("hal returned {}", v), // hal finish first - _ = Systick::delay(1000.millis()).fuse() => hprintln!("timeout", ), + _ = Mono::delay(1000.millis()).fuse() => hprintln!("timeout", ), } // ANCHOR_END: select_biased // ANCHOR: timeout_after_basic // Call hal with long relative timeout using monotonic `timeout_after` - match Systick::timeout_after(1000.millis(), hal_get(1)).await { + match Mono::timeout_after(1000.millis(), hal_get(1)).await { Ok(v) => hprintln!("hal returned {}", v), _ => hprintln!("timeout"), } @@ -62,20 +61,20 @@ mod app { // ANCHOR: timeout_at_basic // get the current time instance - let mut instant = Systick::now(); + let mut instant = Mono::now(); // do this 3 times for n in 0..3 { // absolute point in time without drift instant += 1000.millis(); - Systick::delay_until(instant).await; + Mono::delay_until(instant).await; // absolute point in time for timeout let timeout = instant + 500.millis(); - hprintln!("now is {:?}, timeout at {:?}", Systick::now(), timeout); + hprintln!("now is {:?}, timeout at {:?}", Mono::now(), timeout); - match Systick::timeout_at(timeout, hal_get(n)).await { - Ok(v) => hprintln!("hal returned {} at time {:?}", v, Systick::now()), + match Mono::timeout_at(timeout, hal_get(n)).await { + Ok(v) => hprintln!("hal returned {} at time {:?}", v, Mono::now()), _ => hprintln!("timeout"), } } @@ -90,7 +89,7 @@ async fn hal_get(n: u32) -> u32 { // emulate some delay time dependent on n let d = 350.millis() + n * 100.millis(); hprintln!("the hal takes a duration of {:?}", d); - Systick::delay(d).await; + Mono::delay(d).await; // emulate some return value 5 } diff --git a/examples/nrf52840_blinky/Cargo.lock b/examples/nrf52840_blinky/Cargo.lock index a3d7542..ec5f4f9 100644 --- a/examples/nrf52840_blinky/Cargo.lock +++ b/examples/nrf52840_blinky/Cargo.lock @@ -136,7 +136,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.51", ] [[package]] @@ -179,9 +179,18 @@ dependencies = [ [[package]] name = "embedded-hal" -version = "1.0.0-rc.2" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" + +[[package]] +name = "embedded-hal-async" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e57ec6ad0bc8eb967cf9c9f144177f5e8f2f6f02dad0b8b683f9f05f6b22def" +checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" +dependencies = [ + "embedded-hal 1.0.0", +] [[package]] name = "embedded-storage" @@ -412,18 +421,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -468,18 +477,18 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.51", ] [[package]] name = "rtic-monotonics" -version = "1.4.0" +version = "2.0.0" dependencies = [ "atomic-polyfill", "cfg-if", "cortex-m", "critical-section", - "embedded-hal 1.0.0-rc.2", + "embedded-hal 1.0.0", "fugit", "nrf52840-pac", "rtic-time", @@ -487,9 +496,12 @@ dependencies = [ [[package]] name = "rtic-time" -version = "1.1.0" +version = "2.0.0" dependencies = [ "critical-section", + "embedded-hal 1.0.0", + "embedded-hal-async", + "fugit", "futures-util", "rtic-common", ] @@ -537,9 +549,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c" dependencies = [ "proc-macro2", "quote", @@ -563,7 +575,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.51", ] [[package]] diff --git a/examples/nrf52840_blinky/Cargo.toml b/examples/nrf52840_blinky/Cargo.toml index 8b13649..5569019 100644 --- a/examples/nrf52840_blinky/Cargo.toml +++ b/examples/nrf52840_blinky/Cargo.toml @@ -26,7 +26,7 @@ features = ["thumbv7-backend"] [dependencies.rtic-monotonics] path = "../../rtic-monotonics" -version = "1.4.0" +version = "2.0.0" features = ["nrf52840"] # cargo build/run diff --git a/examples/nrf52840_blinky/src/bin/blinky_rtc.rs b/examples/nrf52840_blinky/src/bin/blinky_rtc.rs index dbdd0b0..fa654b8 100644 --- a/examples/nrf52840_blinky/src/bin/blinky_rtc.rs +++ b/examples/nrf52840_blinky/src/bin/blinky_rtc.rs @@ -5,6 +5,9 @@ use nrf52840_blinky::hal; +use rtic_monotonics::nrf::rtc::prelude::*; +nrf_rtc0_monotonic!(Mono); + #[rtic::app(device = hal::pac, dispatchers = [SWI0_EGU0])] mod app { use super::*; @@ -12,10 +15,6 @@ mod app { use hal::gpio::{Level, Output, Pin, PushPull}; use hal::prelude::*; - use rtic_monotonics::nrf::rtc::Rtc0 as Mono; - use rtic_monotonics::nrf::rtc::*; - use rtic_monotonics::Monotonic; - #[shared] struct Shared {} @@ -30,8 +29,7 @@ mod app { hal::clocks::Clocks::new(cx.device.CLOCK).start_lfclk(); // Initialize Monotonic - let token = rtic_monotonics::create_nrf_rtc0_monotonic_token!(); - Mono::start(cx.device.RTC0, token); + Mono::start(cx.device.RTC0); // Setup LED let port0 = hal::gpio::p0::Parts::new(cx.device.P0); diff --git a/examples/nrf52840_blinky/src/bin/blinky_timer.rs b/examples/nrf52840_blinky/src/bin/blinky_timer.rs index c1342f4..ebb20fc 100644 --- a/examples/nrf52840_blinky/src/bin/blinky_timer.rs +++ b/examples/nrf52840_blinky/src/bin/blinky_timer.rs @@ -5,6 +5,9 @@ use nrf52840_blinky::hal; +use rtic_monotonics::nrf::timer::prelude::*; +nrf_timer0_monotonic!(Mono, 8_000_000); + #[rtic::app(device = hal::pac, dispatchers = [SWI0_EGU0])] mod app { use super::*; @@ -12,10 +15,6 @@ mod app { use hal::gpio::{Level, Output, Pin, PushPull}; use hal::prelude::*; - use rtic_monotonics::nrf::timer::Timer0 as Mono; - use rtic_monotonics::nrf::timer::*; - use rtic_monotonics::Monotonic; - #[shared] struct Shared {} @@ -27,8 +26,7 @@ mod app { #[init] fn init(cx: init::Context) -> (Shared, Local) { // Initialize Monotonic - let token = rtic_monotonics::create_nrf_timer0_monotonic_token!(); - Mono::start(cx.device.TIMER0, token); + Mono::start(cx.device.TIMER0); // Setup LED let port0 = hal::gpio::p0::Parts::new(cx.device.P0); diff --git a/examples/rp2040_local_i2c_init/Cargo.lock b/examples/rp2040_local_i2c_init/Cargo.lock index d40e616..d4c0155 100644 --- a/examples/rp2040_local_i2c_init/Cargo.lock +++ b/examples/rp2040_local_i2c_init/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "atomic-polyfill" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c314e70d181aa6053b26e3f7fbf86d1dfff84f816a6175b967666b3506ef7289" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" dependencies = [ "critical-section", ] @@ -52,7 +52,7 @@ checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" dependencies = [ "bare-metal 0.2.5", "bitfield", - "embedded-hal", + "embedded-hal 0.2.7", "volatile-register", ] @@ -73,23 +73,23 @@ checksum = "f0f6f3e36f203cfedbc78b357fb28730aa2c6dc1ab060ee5c2405e843988d3c7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "crc-any" -version = "2.4.3" +version = "2.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774646b687f63643eb0f4bf13dc263cb581c8c9e57973b6ddf78bda3994d88df" +checksum = "c01a5e1f881f6fb6099a7bdf949e946719fd4f1fefa56264890574febf0eb6d0" dependencies = [ "debug-helper", ] [[package]] name = "critical-section" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "debug-helper" @@ -99,9 +99,9 @@ checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" [[package]] name = "either" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "embedded-dma" @@ -123,10 +123,64 @@ dependencies = [ ] [[package]] -name = "equivalent" +name = "embedded-hal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" + +[[package]] +name = "embedded-hal-async" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" +checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" +dependencies = [ + "embedded-hal 1.0.0", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "frunk" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11a351b59e12f97b4176ee78497dff72e4276fb1ceb13e19056aca7fa0206287" +dependencies = [ + "frunk_core", + "frunk_derives", +] + +[[package]] +name = "frunk_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2469fab0bd07e64ccf0ad57a1438f63160c69b2e57f04a439653d68eb558d6" + +[[package]] +name = "frunk_derives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" +dependencies = [ + "frunk_proc_macro_helpers", + "quote", + "syn 2.0.51", +] + +[[package]] +name = "frunk_proc_macro_helpers" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35b54add839292b743aeda6ebedbd8b11e93404f902c56223e51b9ec18a13d2c" +dependencies = [ + "frunk_core", + "proc-macro2", + "quote", + "syn 2.0.51", +] [[package]] name = "fugit" @@ -139,21 +193,21 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", "futures-task", @@ -169,15 +223,15 @@ checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "indexmap" -version = "2.0.0" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", "hashbrown", @@ -224,7 +278,7 @@ checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -238,15 +292,15 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -266,6 +320,12 @@ dependencies = [ ] [[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -274,7 +334,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -291,18 +351,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -315,11 +375,10 @@ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" [[package]] name = "rp-pico" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab28f6f4e19cec2d61b64cdd685e69794b81c579fd3b765579c46018fe616d0" +checksum = "6341771e6f8e5d130b2b3cbc23435b7847761adf198af09f4b2a60407d43bd56" dependencies = [ - "cortex-m", "cortex-m-rt", "fugit", "rp2040-boot2", @@ -329,23 +388,24 @@ dependencies = [ [[package]] name = "rp2040-boot2" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c773ec49b836077aa144b58dc7654a243e1eecdb6cf0d25361ae7c7600fabd8" +checksum = "7c92f344f63f950ee36cf4080050e4dce850839b9175da38f9d2ffb69b4dbb21" dependencies = [ "crc-any", ] [[package]] name = "rp2040-hal" -version = "0.8.2" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1369bb84862d7f69391a96606b2f29a00bfce7f29a749e23d5f01fc3f607ada0" +checksum = "1ff2b9ae7e6dd6720fd9f64250c9087260e50fe98b6b032ccca65be3581167ca" dependencies = [ "cortex-m", "critical-section", "embedded-dma", - "embedded-hal", + "embedded-hal 0.2.7", + "frunk", "fugit", "itertools", "nb 1.1.0", @@ -368,17 +428,18 @@ dependencies = [ "cortex-m-rt", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "rp2040-pac" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9192cafbb40d717c9e0ddf767aaf9c69fee1b4e48d22ed853b57b11f6d9f3d7e" +checksum = "12d9d8375815f543f54835d01160d4e47f9e2cae75f17ff8f1ec19ce1da96e4c" dependencies = [ "cortex-m", "cortex-m-rt", + "critical-section", "vcell", ] @@ -387,7 +448,7 @@ name = "rp2040_local_i2c_init" version = "0.1.0" dependencies = [ "cortex-m", - "embedded-hal", + "embedded-hal 0.2.7", "fugit", "panic-probe", "rp-pico", @@ -397,7 +458,7 @@ dependencies = [ [[package]] name = "rtic" -version = "2.0.0" +version = "2.0.1" dependencies = [ "atomic-polyfill", "bare-metal 1.0.0", @@ -409,9 +470,10 @@ dependencies = [ [[package]] name = "rtic-common" -version = "1.0.0" +version = "1.0.1" dependencies = [ "critical-section", + "portable-atomic", ] [[package]] @@ -422,22 +484,23 @@ checksum = "d9369355b04d06a3780ec0f51ea2d225624db777acbc60abd8ca4832da5c1a42" [[package]] name = "rtic-macros" -version = "2.0.0" +version = "2.0.1" dependencies = [ "indexmap", "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 2.0.51", ] [[package]] name = "rtic-monotonics" -version = "1.0.0" +version = "2.0.0" dependencies = [ "atomic-polyfill", "cfg-if", "cortex-m", + "embedded-hal 1.0.0", "fugit", "rp2040-pac", "rtic-time", @@ -445,9 +508,12 @@ dependencies = [ [[package]] name = "rtic-time" -version = "1.0.0" +version = "2.0.0" dependencies = [ "critical-section", + "embedded-hal 1.0.0", + "embedded-hal-async", + "fugit", "futures-util", "rtic-common", ] @@ -494,10 +560,21 @@ dependencies = [ ] [[package]] +name = "syn" +version = "2.0.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "usb-device" @@ -525,9 +602,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "volatile-register" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee8f19f9d74293faf70901bc20ad067dc1ad390d2cbf1e3f75f721ffee908b6" +checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" dependencies = [ "vcell", ] diff --git a/examples/rp2040_local_i2c_init/Cargo.toml b/examples/rp2040_local_i2c_init/Cargo.toml index 6e501b6..300bede 100644 --- a/examples/rp2040_local_i2c_init/Cargo.toml +++ b/examples/rp2040_local_i2c_init/Cargo.toml @@ -15,14 +15,14 @@ features = ["thumbv6-backend"] [dependencies.rtic-monotonics] path = "../../rtic-monotonics" -version = "1.0.0" +version = "2.0.0" features = ["rp2040"] [dependencies] cortex-m = "0.7" embedded-hal = { version = "0.2.7", features = ["unproven"] } fugit = "0.3" -rp-pico = "0.7.0" +rp-pico = "0.8.0" panic-probe = "0.3" [profile.dev] diff --git a/examples/rp2040_local_i2c_init/src/main.rs b/examples/rp2040_local_i2c_init/src/main.rs index 97049dc..799376c 100644 --- a/examples/rp2040_local_i2c_init/src/main.rs +++ b/examples/rp2040_local_i2c_init/src/main.rs @@ -1,15 +1,21 @@ #![no_std] #![no_main] -#[rtic::app( - device = rp_pico::hal::pac, - dispatchers = [TIMER_IRQ_1] -)] +use rtic_monotonics::rp2040::prelude::*; + +rp2040_timer_monotonic!(Mono); + +#[rtic::app(device = rp_pico::hal::pac)] mod app { + use super::*; + use rp_pico::hal::{ - clocks, gpio, - gpio::pin::bank0::{Gpio2, Gpio25, Gpio3}, - gpio::pin::PushPullOutput, + clocks, + gpio::{ + self, + bank0::{Gpio2, Gpio25, Gpio3}, + FunctionSioOutput, PullNone, PullUp, + }, pac, sio::Sio, watchdog::Watchdog, @@ -20,15 +26,13 @@ mod app { use core::mem::MaybeUninit; use embedded_hal::digital::v2::{OutputPin, ToggleableOutputPin}; use fugit::RateExtU32; - use rtic_monotonics::rp2040::*; - use panic_probe as _; type I2CBus = I2C< pac::I2C1, ( - gpio::Pin<Gpio2, gpio::FunctionI2C>, - gpio::Pin<Gpio3, gpio::FunctionI2C>, + gpio::Pin<Gpio2, gpio::FunctionI2C, PullUp>, + gpio::Pin<Gpio3, gpio::FunctionI2C, PullUp>, ), >; @@ -37,7 +41,7 @@ mod app { #[local] struct Local { - led: gpio::Pin<Gpio25, PushPullOutput>, + led: gpio::Pin<Gpio25, FunctionSioOutput, PullNone>, i2c: &'static mut I2CBus, } @@ -48,11 +52,8 @@ mod app { i2c_ctx: MaybeUninit<I2CBus> = MaybeUninit::uninit() ])] fn init(mut ctx: init::Context) -> (Shared, Local) { - // Initialize the interrupt for the RP2040 timer and obtain the token - // proving that we have. - let rp2040_timer_token = rtic_monotonics::create_rp2040_monotonic_token!(); // Configure the clocks, watchdog - The default is to generate a 125 MHz system clock - Timer::start(ctx.device.TIMER, &mut ctx.device.RESETS, rp2040_timer_token); // default rp2040 clock-rate is 125MHz + Mono::start(ctx.device.TIMER, &mut ctx.device.RESETS); // default rp2040 clock-rate is 125MHz let mut watchdog = Watchdog::new(ctx.device.WATCHDOG); let clocks = clocks::init_clocks_and_plls( XOSC_CRYSTAL_FREQ, @@ -74,12 +75,21 @@ mod app { sio.gpio_bank0, &mut ctx.device.RESETS, ); - let mut led = gpioa.led.into_push_pull_output(); + let mut led = gpioa + .led + .into_pull_type::<PullNone>() + .into_push_pull_output(); led.set_low().unwrap(); // Init I2C pins - let sda_pin = gpioa.gpio2.into_mode::<gpio::FunctionI2C>(); - let scl_pin = gpioa.gpio3.into_mode::<gpio::FunctionI2C>(); + let sda_pin = gpioa + .gpio2 + .into_pull_up_disabled() + .into_function::<gpio::FunctionI2C>(); + let scl_pin = gpioa + .gpio3 + .into_pull_up_disabled() + .into_function::<gpio::FunctionI2C>(); // Init I2C itself, using MaybeUninit to overwrite the previously // uninitialized i2c_ctx variable without dropping its value @@ -118,7 +128,7 @@ mod app { // now to do something with it! // Delay for 1 second - Timer::delay(1000.millis()).await; + Mono::delay(1000.millis()).await; } } } diff --git a/examples/stm32f3_blinky/Cargo.lock b/examples/stm32f3_blinky/Cargo.lock index 3fbec9e..527d4eb 100644 --- a/examples/stm32f3_blinky/Cargo.lock +++ b/examples/stm32f3_blinky/Cargo.lock @@ -52,11 +52,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bxcan" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b13b4b2ea9ab2ba924063ebb86ad895cb79f4a79bf90f27949eb20c335b30f9" +checksum = "40ac3d0c0a542d0ab5521211f873f62706a7136df415676f676d347e5a41dd80" dependencies = [ "bitflags", + "embedded-hal 0.2.7", "nb 1.1.0", "vcell", ] @@ -86,7 +87,7 @@ dependencies = [ "bare-metal 0.2.5", "bitfield", "critical-section", - "embedded-hal", + "embedded-hal 0.2.7", "volatile-register", ] @@ -112,9 +113,9 @@ dependencies = [ [[package]] name = "critical-section" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "darling" @@ -136,7 +137,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.50", ] [[package]] @@ -147,7 +148,7 @@ checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" dependencies = [ "darling_core", "quote", - "syn 2.0.22", + "syn 2.0.50", ] [[package]] @@ -170,6 +171,21 @@ dependencies = [ ] [[package]] +name = "embedded-hal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" + +[[package]] +name = "embedded-hal-async" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" +dependencies = [ + "embedded-hal 1.0.0", +] + +[[package]] name = "embedded-time" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -180,9 +196,9 @@ dependencies = [ [[package]] name = "enumset" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e875f1719c16de097dee81ed675e2d9bb63096823ed3f0ca827b7dea3028bbbb" +checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" dependencies = [ "enumset_derive", ] @@ -196,7 +212,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.50", ] [[package]] @@ -343,28 +359,28 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] [[package]] name = "panic-rtt-target" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ab67bc881453e4c90f958c657c1303670ea87bc1a16e87fd71a40f656dce9" +checksum = "608d1d809dd8960d5e8364981279c7ab280a13d98b99eae049885a7ab2b1cbfe" dependencies = [ - "cortex-m", - "rtt-target 0.3.1", + "critical-section", + "rtt-target", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pin-project-lite" @@ -379,6 +395,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -404,18 +426,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -431,7 +453,7 @@ dependencies = [ [[package]] name = "rtic" -version = "2.0.0" +version = "2.0.1" dependencies = [ "atomic-polyfill", "bare-metal 1.0.0", @@ -443,9 +465,10 @@ dependencies = [ [[package]] name = "rtic-common" -version = "1.0.0" +version = "1.0.1" dependencies = [ "critical-section", + "portable-atomic", ] [[package]] @@ -456,49 +479,44 @@ checksum = "d9369355b04d06a3780ec0f51ea2d225624db777acbc60abd8ca4832da5c1a42" [[package]] name = "rtic-macros" -version = "2.0.0" +version = "2.0.1" dependencies = [ "indexmap", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.50", ] [[package]] name = "rtic-monotonics" -version = "1.0.0" +version = "2.0.0" dependencies = [ "atomic-polyfill", "cfg-if", "cortex-m", + "embedded-hal 1.0.0", "fugit", "rtic-time", ] [[package]] name = "rtic-time" -version = "1.0.0" +version = "2.0.0" dependencies = [ "critical-section", + "embedded-hal 1.0.0", + "embedded-hal-async", + "fugit", "futures-util", "rtic-common", ] [[package]] name = "rtt-target" -version = "0.3.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065d6058bb1204f51a562a67209e1817cf714759d5cf845aa45c75fa7b0b9d9b" -dependencies = [ - "ufmt-write", -] - -[[package]] -name = "rtt-target" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afa12c77ba1b9bf560e4039a9b9a08bb9cde0e9e6923955eeb917dd8d5cf303" +checksum = "10b34c9e6832388e45f3c01f1bb60a016384a0a4ad80cdd7d34913bed25037f0" dependencies = [ "critical-section", "ufmt-write", @@ -553,9 +571,9 @@ dependencies = [ [[package]] name = "stm32f3" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "265cda62ac13307414de4aca58dbbbd8038ddba85cffbb335823aa216f2e3200" +checksum = "b28b37228ef3fa47956af38c6abd756e912f244c1657f14e66d42fc8d74ea96f" dependencies = [ "bare-metal 1.0.0", "cortex-m", @@ -567,30 +585,32 @@ dependencies = [ name = "stm32f3-blinky" version = "0.1.0" dependencies = [ - "embedded-hal", + "cortex-m", + "embedded-hal 0.2.7", "panic-rtt-target", "rtic", "rtic-monotonics", - "rtt-target 0.4.0", + "rtt-target", "stm32f3xx-hal", ] [[package]] name = "stm32f3xx-hal" -version = "0.9.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9d827f02df3826371c897404dfbea8a1abd544eed9d6cdc3e5f6e9f04b9e06" +checksum = "4c73e8b6e63435b75198d2fe2b27cd7f5c8e0b07bd5da9f82cffddf23210f77f" dependencies = [ - "bare-metal 1.0.0", "bxcan", "cfg-if", "cortex-m", "cortex-m-rt", + "critical-section", "embedded-dma", - "embedded-hal", + "embedded-hal 0.2.7", "embedded-time", "enumset", "nb 1.1.0", + "num-traits", "paste", "rtcc", "slice-group-by", @@ -612,9 +632,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.22" +version = "2.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" dependencies = [ "proc-macro2", "quote", diff --git a/examples/stm32f3_blinky/Cargo.toml b/examples/stm32f3_blinky/Cargo.toml index 3773f0e..5e28188 100644 --- a/examples/stm32f3_blinky/Cargo.toml +++ b/examples/stm32f3_blinky/Cargo.toml @@ -14,17 +14,21 @@ features = ["thumbv7-backend"] [dependencies.rtic-monotonics] path = "../../rtic-monotonics" -version = "1.0.0" +version = "2.0.0" features = ["cortex-m-systick"] +[dependencies.cortex-m] +version = "0.7.7" +features = ["critical-section-single-core"] + [dependencies] embedded-hal = "0.2.7" -panic-rtt-target = { version = "0.1.2", features = ["cortex-m"] } -rtt-target = { version = "0.4.0" } +panic-rtt-target = { version = "0.1.3" } +rtt-target = { version = "0.5.0" } [dependencies.stm32f3xx-hal] features = ["stm32f303xc", "rt"] -version = "0.9.2" +version = "0.10.0" # this lets you use `cargo fix`! [[bin]] diff --git a/examples/stm32f3_blinky/src/main.rs b/examples/stm32f3_blinky/src/main.rs index 28dc7c2..e8c2e50 100644 --- a/examples/stm32f3_blinky/src/main.rs +++ b/examples/stm32f3_blinky/src/main.rs @@ -5,11 +5,13 @@ use panic_rtt_target as _; use rtic::app; -use rtic_monotonics::systick::*; +use rtic_monotonics::systick::prelude::*; use rtt_target::{rprintln, rtt_init_print}; use stm32f3xx_hal::gpio::{Output, PushPull, PA5}; use stm32f3xx_hal::prelude::*; +systick_monotonic!(Mono, 1000); + #[app(device = stm32f3xx_hal::pac, peripherals = true, dispatchers = [SPI1])] mod app { use super::*; @@ -30,8 +32,7 @@ mod app { let mut rcc = cx.device.RCC.constrain(); // 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, 36_000_000, systick_mono_token); // default STM32F303 clock-rate is 36MHz + Mono::start(cx.core.SYST, 36_000_000); // default STM32F303 clock-rate is 36MHz rtt_init_print!(); rprintln!("init"); @@ -67,7 +68,7 @@ mod app { cx.local.led.set_low().unwrap(); *cx.local.state = true; } - Systick::delay(1000.millis()).await; + Mono::delay(1000.millis()).await; } } } diff --git a/examples/stm32g030f6_periodic_prints/.cargo/config.toml b/examples/stm32g030f6_periodic_prints/.cargo/config.toml new file mode 100644 index 0000000..15ddd2a --- /dev/null +++ b/examples/stm32g030f6_periodic_prints/.cargo/config.toml @@ -0,0 +1,24 @@ +[target.'cfg(all(target_arch = "arm", target_os = "none"))'] +# TODO(2) replace `$CHIP` with your chip's name (see `probe-run --list-chips` output) +runner = "probe-run --chip STM32G030F6Px" +rustflags = [ + "-C", "linker=flip-link", + "-C", "link-arg=-Tlink.x", + "-C", "link-arg=-Tdefmt.x", + # This is needed if your flash or ram addresses are not aligned to 0x10000 in memory.x + # See https://github.com/rust-embedded/cortex-m-quickstart/pull/95 + "-C", "link-arg=--nmagic", +] + +[build] +# TODO(3) Adjust the compilation target. +# (`thumbv6m-*` is compatible with all ARM Cortex-M chips but using the right +# target improves performance) +target = "thumbv6m-none-eabi" # Cortex-M0 and Cortex-M0+ +# target = "thumbv7m-none-eabi" # Cortex-M3 +# target = "thumbv7em-none-eabi" # Cortex-M4 and Cortex-M7 (no FPU) +# target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU) + +[alias] +rb = "run --bin" +rrb = "run --release --bin" diff --git a/examples/stm32g030f6_periodic_prints/.vscode/settings.json b/examples/stm32g030f6_periodic_prints/.vscode/settings.json new file mode 100644 index 0000000..c684c24 --- /dev/null +++ b/examples/stm32g030f6_periodic_prints/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + // override the default setting (`cargo check --all-targets`) which produces the following error + // "can't find crate for `test`" when the default compilation target is a no_std target + // with these changes RA will call `cargo check --bins` on save + "rust-analyzer.checkOnSave.allTargets": false, + "rust-analyzer.checkOnSave.extraArgs": [ + "--bins" + ] +} diff --git a/examples/stm32g030f6_periodic_prints/Cargo.lock b/examples/stm32g030f6_periodic_prints/Cargo.lock new file mode 100644 index 0000000..65dbf61 --- /dev/null +++ b/examples/stm32g030f6_periodic_prints/Cargo.lock @@ -0,0 +1,511 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "bare-metal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "bare-metal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" + +[[package]] +name = "bitfield" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cortex-m" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" +dependencies = [ + "bare-metal 0.2.5", + "bitfield", + "critical-section", + "embedded-hal 0.2.7", + "volatile-register", +] + +[[package]] +name = "cortex-m-rt" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee84e813d593101b1723e13ec38b6ab6abbdbaaa4546553f5395ed274079ddb1" +dependencies = [ + "cortex-m-rt-macros", +] + +[[package]] +name = "cortex-m-rt-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f6f3e36f203cfedbc78b357fb28730aa2c6dc1ab060ee5c2405e843988d3c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "critical-section" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" + +[[package]] +name = "defmt" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3939552907426de152b3c2c6f51ed53f98f448babd26f28694c95f5906194595" +dependencies = [ + "bitflags", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18bdc7a7b92ac413e19e95240e75d3a73a8d8e78aa24a594c22cbb4d44b4bbda" +dependencies = [ + "defmt-parser", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.51", +] + +[[package]] +name = "defmt-parser" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4a5fefe330e8d7f31b16a318f9ce81000d8e35e69b93eae154d16d2278f70f" +dependencies = [ + "thiserror", +] + +[[package]] +name = "defmt-rtt" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "609923761264dd99ed9c7d209718cda4631c5fe84668e0f0960124cbb844c49f" +dependencies = [ + "critical-section", + "defmt", +] + +[[package]] +name = "embedded-hal" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" +dependencies = [ + "nb 0.1.3", + "void", +] + +[[package]] +name = "embedded-hal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" + +[[package]] +name = "embedded-hal-async" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" +dependencies = [ + "embedded-hal 1.0.0", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "fugit" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17186ad64927d5ac8f02c1e77ccefa08ccd9eaa314d5a4772278aa204a22f7e7" +dependencies = [ + "gcd", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "indexmap" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.1.0", +] + +[[package]] +name = "nb" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" + +[[package]] +name = "panic-probe" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa6fa5645ef5a760cd340eaa92af9c1ce131c8c09e7f8926d8a24b59d26652b9" +dependencies = [ + "cortex-m", + "defmt", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rtic" +version = "2.0.1" +dependencies = [ + "atomic-polyfill", + "bare-metal 1.0.0", + "cortex-m", + "critical-section", + "rtic-core", + "rtic-macros", +] + +[[package]] +name = "rtic-common" +version = "1.0.1" +dependencies = [ + "critical-section", + "portable-atomic", +] + +[[package]] +name = "rtic-core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9369355b04d06a3780ec0f51ea2d225624db777acbc60abd8ca4832da5c1a42" + +[[package]] +name = "rtic-macros" +version = "2.0.1" +dependencies = [ + "indexmap", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.51", +] + +[[package]] +name = "rtic-monotonics" +version = "2.0.0" +dependencies = [ + "atomic-polyfill", + "cfg-if", + "cortex-m", + "embedded-hal 1.0.0", + "fugit", + "proc-macro2", + "quote", + "rtic-time", + "stm32-metapac", +] + +[[package]] +name = "rtic-time" +version = "2.0.0" +dependencies = [ + "critical-section", + "embedded-hal 1.0.0", + "embedded-hal-async", + "fugit", + "futures-util", + "rtic-common", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "stm32-metapac" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deabea56a8821dcea05d0109f3ab3135f31eb572444e5da203d06149c594c8c6" +dependencies = [ + "cortex-m", +] + +[[package]] +name = "stm32g0" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc2ac544cea741c92a501bfd027d197354cd22ee92b439aea26d2ee0b55bcd7" +dependencies = [ + "bare-metal 1.0.0", + "cortex-m", + "cortex-m-rt", + "vcell", +] + +[[package]] +name = "stm32g030f6_periodic_prints" +version = "0.1.0" +dependencies = [ + "cortex-m", + "cortex-m-rt", + "defmt", + "defmt-rtt", + "fugit", + "panic-probe", + "rtic", + "rtic-monotonics", + "stm32g0xx-hal", +] + +[[package]] +name = "stm32g0xx-hal" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fae457e81f9601121c5b92dca20e3612c80ea957898f8e0e68efcaab6b242067" +dependencies = [ + "bare-metal 1.0.0", + "cortex-m", + "embedded-hal 0.2.7", + "fugit", + "nb 1.1.0", + "stm32g0", + "void", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.51", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "vcell" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "volatile-register" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" +dependencies = [ + "vcell", +] diff --git a/examples/stm32g030f6_periodic_prints/Cargo.toml b/examples/stm32g030f6_periodic_prints/Cargo.toml new file mode 100644 index 0000000..d8d8e35 --- /dev/null +++ b/examples/stm32g030f6_periodic_prints/Cargo.toml @@ -0,0 +1,48 @@ +[package] +authors = ["Finomnis <finomnis@gmail.com>"] +name = "stm32g030f6_periodic_prints" +edition = "2021" +version = "0.1.0" + +[workspace] + + +[dependencies.rtic] +path = "../../rtic" +version = "2.0.1" +features = ["thumbv6-backend"] + +[dependencies.rtic-monotonics] +path = "../../rtic-monotonics" +version = "2.0.0" +features = ["stm32g030f6", "stm32_tim3"] + + +[dependencies] +cortex-m = { version = "0.7.7", features = ["critical-section-single-core"] } +cortex-m-rt = "0.7.3" +defmt = "0.3.4" +defmt-rtt = "0.4.0" +fugit = "0.3.7" +panic-probe = { version = "0.3.1", features = ["print-defmt"] } + +stm32g0xx-hal = { version = "0.2.0", features = ["rt", "stm32g030"] } + +# cargo build/run +[profile.dev] +codegen-units = 1 +debug = 2 +debug-assertions = true # <- +incremental = false +opt-level = 3 # <- +overflow-checks = true # <- + +# cargo build/run --release +[profile.release] +codegen-units = 1 +debug = 2 +debug-assertions = false # <- +incremental = false +lto = 'fat' +opt-level = 3 # <- +overflow-checks = false # <- diff --git a/examples/stm32g030f6_periodic_prints/README.md b/examples/stm32g030f6_periodic_prints/README.md new file mode 100644 index 0000000..e669378 --- /dev/null +++ b/examples/stm32g030f6_periodic_prints/README.md @@ -0,0 +1,31 @@ +# `stm32g030f6_periodic_prints` + +An RTIC periodic print example intended for the stm32g030f6 chip. + +## Dependencies + +#### 1. `flip-link`: + +```console +$ cargo install flip-link +``` + +#### 2. `probe-rs`: + +``` console +$ # make sure to install v0.2.0 or later +$ cargo install probe-rs --features cli +``` + + +## Run + +The stm32g030f6 chip needs to be connected to the computer via an SWD probe, like a [J-Link EDU Mini]. + +Then, run: + +``` +cargo run --release +``` + +[J-Link EDU Mini]: https://www.segger.com/products/debug-probes/j-link/models/j-link-edu-mini/ diff --git a/examples/stm32g030f6_periodic_prints/memory.x b/examples/stm32g030f6_periodic_prints/memory.x new file mode 100644 index 0000000..3f89120 --- /dev/null +++ b/examples/stm32g030f6_periodic_prints/memory.x @@ -0,0 +1,6 @@ +/* Linker script for the STM32G030F6 */ +MEMORY +{ + FLASH : ORIGIN = 0x08000000, LENGTH = 32K + RAM : ORIGIN = 0x20000000, LENGTH = 8K +} diff --git a/examples/stm32g030f6_periodic_prints/src/main.rs b/examples/stm32g030f6_periodic_prints/src/main.rs new file mode 100644 index 0000000..00fa802 --- /dev/null +++ b/examples/stm32g030f6_periodic_prints/src/main.rs @@ -0,0 +1,57 @@ +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +use defmt_rtt as _; // global logger + +pub use stm32g0xx_hal as hal; // memory layout + +use panic_probe as _; + +// same panicking *behavior* as `panic-probe` but doesn't print a panic message +// this prevents the panic message being printed *twice* when `defmt::panic` is invoked +#[defmt::panic_handler] +fn panic() -> ! { + cortex_m::asm::udf() +} + +use rtic_monotonics::stm32::prelude::*; +stm32_tim3_monotonic!(Mono, 1_000_000); + +#[rtic::app(device = hal::stm32, peripherals = true, dispatchers = [USART1, USART2])] +mod app { + use super::*; + + #[local] + struct LocalResources {} + + #[shared] + struct SharedResources {} + + #[init] + fn init(ctx: init::Context) -> (SharedResources, LocalResources) { + // enable dma clock during sleep, otherwise defmt doesn't work + ctx.device.RCC.ahbenr.modify(|_, w| w.dmaen().set_bit()); + + defmt::println!("TIM Monotonic blinker example!"); + + // Start the monotonic + Mono::start(16_000_000); + + print_messages::spawn().unwrap(); + + (SharedResources {}, LocalResources {}) + } + + #[task(priority = 2)] + async fn print_messages(_cx: print_messages::Context) { + let mut next_update = <Mono as Monotonic>::Instant::from_ticks(0u64); + + loop { + defmt::println!("Time: {} ticks", Mono::now().ticks()); + next_update += 1000u64.millis(); + Mono::delay_until(next_update).await; + } + } +} diff --git a/examples/teensy4_blinky/Cargo.lock b/examples/teensy4_blinky/Cargo.lock index 314eae0..8ae5b95 100644 --- a/examples/teensy4_blinky/Cargo.lock +++ b/examples/teensy4_blinky/Cargo.lock @@ -133,9 +133,18 @@ dependencies = [ [[package]] name = "embedded-hal" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e57ec6ad0bc8eb967cf9c9f144177f5e8f2f6f02dad0b8b683f9f05f6b22def" +checksum = "bc402f79e1fd22731ca945b4f97b5ff37e7b3f379312595c42bb2e8811c29920" + +[[package]] +name = "embedded-hal-async" +version = "1.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa1fba2ef2ffb35d614acc6fb323ddf7facc45c069f24544d49ea54e5043626d" +dependencies = [ + "embedded-hal 1.0.0-rc.3", +] [[package]] name = "equivalent" @@ -440,12 +449,12 @@ dependencies = [ [[package]] name = "rtic-monotonics" -version = "1.4.0" +version = "2.0.0" dependencies = [ "atomic-polyfill", "cfg-if", "cortex-m", - "embedded-hal 1.0.0-rc.2", + "embedded-hal 1.0.0-rc.3", "fugit", "imxrt-ral", "rtic-time", @@ -453,9 +462,12 @@ dependencies = [ [[package]] name = "rtic-time" -version = "1.1.0" +version = "2.0.0" dependencies = [ "critical-section", + "embedded-hal 1.0.0-rc.3", + "embedded-hal-async", + "fugit", "futures-util", "rtic-common", ] diff --git a/examples/teensy4_blinky/Cargo.toml b/examples/teensy4_blinky/Cargo.toml index a81a155..e050213 100644 --- a/examples/teensy4_blinky/Cargo.toml +++ b/examples/teensy4_blinky/Cargo.toml @@ -14,7 +14,7 @@ features = ["thumbv7-backend"] [dependencies.rtic-monotonics] path = "../../rtic-monotonics" -version = "1.2.1" +version = "2.0.0" features = ["imxrt_gpt1"] [dependencies] diff --git a/examples/teensy4_blinky/examples/with_logs.rs b/examples/teensy4_blinky/examples/with_logs.rs index 82c7154..111e21e 100644 --- a/examples/teensy4_blinky/examples/with_logs.rs +++ b/examples/teensy4_blinky/examples/with_logs.rs @@ -13,9 +13,8 @@ use bsp::logging; use embedded_hal::serial::Write; -use rtic_monotonics::imxrt::Gpt1 as Mono; -use rtic_monotonics::imxrt::*; -use rtic_monotonics::Monotonic; +use rtic_monotonics::imxrt::prelude::*; +imxrt_gpt1_monotonic!(Mono, board::PERCLK_FREQUENCY); #[rtic::app(device = teensy4_bsp, dispatchers = [LPSPI1])] mod app { @@ -61,8 +60,7 @@ mod app { // Initialize Monotonic gpt1.set_clock_source(hal::gpt::ClockSource::PeripheralClock); - let gpt1_mono_token = rtic_monotonics::create_imxrt_gpt1_token!(); - Mono::start(board::PERCLK_FREQUENCY, gpt1.release(), gpt1_mono_token); + Mono::start(gpt1.release()); // Setup LED let led = board::led(&mut gpio2, pins.p13); diff --git a/examples/teensy4_blinky/src/main.rs b/examples/teensy4_blinky/src/main.rs index 443e605..b3b1773 100644 --- a/examples/teensy4_blinky/src/main.rs +++ b/examples/teensy4_blinky/src/main.rs @@ -10,8 +10,8 @@ fn panic(_: &::core::panic::PanicInfo) -> ! { use teensy4_bsp::{board, hal}; -use rtic_monotonics::imxrt::Gpt1 as Mono; -use rtic_monotonics::imxrt::*; +use rtic_monotonics::imxrt::prelude::*; +imxrt_gpt1_monotonic!(Mono, board::PERCLK_FREQUENCY); #[rtic::app(device = teensy4_bsp, dispatchers = [LPSPI1])] mod app { @@ -36,8 +36,7 @@ mod app { // Initialize Monotonic gpt1.set_clock_source(hal::gpt::ClockSource::PeripheralClock); - let gpt1_mono_token = rtic_monotonics::create_imxrt_gpt1_token!(); - Mono::start(board::PERCLK_FREQUENCY, gpt1.release(), gpt1_mono_token); + Mono::start(gpt1.release()); // Setup LED let led = board::led(&mut gpio2, pins.p13); |
