Merge pull request #709 from romancardenas/master

cortex-m as optional dependency
This commit is contained in:
Emil Fresk 2023-03-29 21:18:17 +02:00 committed by GitHub
commit 064cf19265
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 29 additions and 26 deletions

View file

@ -42,7 +42,7 @@ pub fn codegen(app: &App, analysis: &Analysis) -> TokenStream2 {
let device = &app.args.device; let device = &app.args.device;
let enum_ = util::interrupt_ident(); let enum_ = util::interrupt_ident();
quote!(rtic::pend(#device::#enum_::#dispatcher_name);) quote!(rtic::export::pend(#device::#enum_::#dispatcher_name);)
} else { } else {
// For 0 priority tasks we don't need to pend anything // For 0 priority tasks we don't need to pend anything
quote!() quote!()

View file

@ -141,7 +141,7 @@ pub fn codegen(ctxt: Context, app: &App, analysis: &Analysis) -> TokenStream2 {
let device = &app.args.device; let device = &app.args.device;
let enum_ = util::interrupt_ident(); let enum_ = util::interrupt_ident();
let interrupt = &analysis.interrupts.get(&priority).expect("UREACHABLE").0; let interrupt = &analysis.interrupts.get(&priority).expect("UREACHABLE").0;
quote!(rtic::pend(#device::#enum_::#interrupt);) quote!(rtic::export::pend(#device::#enum_::#interrupt);)
} else { } else {
quote!() quote!()
}; };

View file

@ -13,6 +13,8 @@ For each category, *Added*, *Changed*, *Fixed* add new entries at the top!
### Changed ### Changed
- `cortex-m` set as an optional dependency
- Moved `cortex-m`-related utilities from `rtic/lib.rs` to `rtic/export.rs`
- Make async task priorities start at 0, instead of 1, to always start at the lowest priority - Make async task priorities start at 0, instead of 1, to always start at the lowest priority
## [v1.1.4] - 2023-02-26 ## [v1.1.4] - 2023-02-26

View file

@ -34,7 +34,7 @@ version = "2.0.0-alpha.0"
name = "rtic" name = "rtic"
[dependencies] [dependencies]
cortex-m = "0.7.0" cortex-m = { version = "0.7.0", optional = true }
bare-metal = "1.0.0" bare-metal = "1.0.0"
#portable-atomic = { version = "0.3.19" } #portable-atomic = { version = "0.3.19" }
atomic-polyfill = "1" atomic-polyfill = "1"
@ -65,17 +65,17 @@ trybuild = "1"
[features] [features]
default = [] default = []
thumbv6-backend = ["rtic-macros/cortex-m-source-masking"] thumbv6-backend = ["cortex-m", "rtic-macros/cortex-m-source-masking"]
thumbv7-backend = ["rtic-macros/cortex-m-basepri"] thumbv7-backend = ["cortex-m", "rtic-macros/cortex-m-basepri"]
thumbv8base-backend = ["rtic-macros/cortex-m-source-masking"] thumbv8base-backend = ["cortex-m", "rtic-macros/cortex-m-source-masking"]
thumbv8main-backend = ["rtic-macros/cortex-m-basepri"] thumbv8main-backend = ["cortex-m", "rtic-macros/cortex-m-basepri"]
# riscv-clic-backend = ["rtic-macros/riscv-clic"] # riscv-clic-backend = ["rtic-macros/riscv-clic"]
# riscv-ch32-backend = ["rtic-macros/riscv-ch32"] # riscv-ch32-backend = ["rtic-macros/riscv-ch32"]
# riscv-esp32c3-backend = ["rtic-macros/riscv-esp32c3"] # riscv-esp32c3-backend = ["rtic-macros/riscv-esp32c3"]
# needed for testing # needed for testing
rtic-uitestv7 = ["thumbv7-backend", "rtic-macros/cortex-m-basepri"] rtic-uitestv7 = ["thumbv7-backend"]
rtic-uitestv6 = ["thumbv6-backend", "rtic-macros/cortex-m-source-masking"] rtic-uitestv6 = ["thumbv6-backend"]
test-critical-section = ["cortex-m/critical-section-single-core", "rtic-monotonics/systick-100hz"] test-critical-section = ["cortex-m/critical-section-single-core", "rtic-monotonics/systick-100hz"]
# [[example]] # [[example]]

View file

@ -32,13 +32,23 @@ pub use cortex_source_mask::*;
#[cfg(any(feature = "cortex-m-source-masking", feature = "rtic-uitestv6"))] #[cfg(any(feature = "cortex-m-source-masking", feature = "rtic-uitestv6"))]
mod cortex_source_mask; mod cortex_source_mask;
#[cfg(feature = "cortex-m")]
pub use cortex_m::{interrupt::InterruptNumber, peripheral::NVIC};
/// Sets the given `interrupt` as pending
///
/// This is a convenience function around
/// [`NVIC::pend`](../cortex_m/peripheral/struct.NVIC.html#method.pend)
#[cfg(feature = "cortex-m")]
pub fn pend<I>(interrupt: I)
where
I: InterruptNumber,
{
NVIC::pend(interrupt);
}
/// Priority conversion, takes logical priorities 1..=N and converts it to NVIC priority. /// Priority conversion, takes logical priorities 1..=N and converts it to NVIC priority.
#[cfg(any( #[cfg(feature = "cortex-m")]
feature = "cortex-m-basepri",
feature = "cortex-m-source-masking",
feature = "rtic-uitestv6",
feature = "rtic-uitestv7",
))]
#[inline] #[inline]
#[must_use] #[must_use]
pub const fn cortex_logical2hw(logical: u8, nvic_prio_bits: u8) -> u8 { pub const fn cortex_logical2hw(logical: u8, nvic_prio_bits: u8) -> u8 {

View file

@ -33,7 +33,6 @@
//deny_warnings_placeholder_for_ci //deny_warnings_placeholder_for_ci
#![allow(clippy::inline_always)] #![allow(clippy::inline_always)]
use cortex_m::{interrupt::InterruptNumber, peripheral::NVIC};
pub use rtic_core::{prelude as mutex_prelude, Exclusive, Mutex}; pub use rtic_core::{prelude as mutex_prelude, Exclusive, Mutex};
pub use rtic_macros::app; pub use rtic_macros::app;
// pub use rtic_monotonic::{self, Monotonic}; // pub use rtic_monotonic::{self, Monotonic};
@ -47,16 +46,8 @@ pub mod mutex {
#[doc(hidden)] #[doc(hidden)]
pub mod export; pub mod export;
/// Sets the given `interrupt` as pending #[cfg(feature = "cortex-m")]
/// pub use export::pend;
/// This is a convenience function around
/// [`NVIC::pend`](../cortex_m/peripheral/struct.NVIC.html#method.pend)
pub fn pend<I>(interrupt: I)
where
I: InterruptNumber,
{
NVIC::pend(interrupt);
}
use core::cell::UnsafeCell; use core::cell::UnsafeCell;