mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-12-19 06:15:45 +01:00
syntax tweaks, relax check, add set_pending(), deal with imported types
- allow trailing commas in list of resources - make task.resources optional - add rtfm::set_pending function which can be used to force an interrupt into the pending state. This is a replacement of the old rtfm::request. rtfm::set_pending takes the Interrupt enum provided by the device crate as argument. (The old rtfm::request took a task function as argument) - the user may want to use types they imported into the root of the crate. These types are not available in e.g. `mod idle` so `idle::Resources` *can't* be defined in that module. To workaround this problem `idle::Resources` will be defined in the root, with some other name, and then be re-exported in the `idle` module. - remove the "a resource only used by one task should be local data" check. In some cases you do want a resource owned by a single task instead of local data since `init` can access resources but not a task local data.
This commit is contained in:
parent
4b0c3bff87
commit
3cebf49a2f
7 changed files with 157 additions and 54 deletions
11
src/lib.rs
11
src/lib.rs
|
|
@ -12,6 +12,7 @@ pub use cortex_m::asm::{bkpt, wfi};
|
|||
pub use cortex_m::interrupt::CriticalSection;
|
||||
pub use cortex_m::interrupt::free as atomic;
|
||||
pub use static_ref::Static;
|
||||
use cortex_m::interrupt::Nr;
|
||||
#[cfg(not(armv6m))]
|
||||
use cortex_m::register::{basepri_max, basepri};
|
||||
|
||||
|
|
@ -175,6 +176,16 @@ impl Threshold {
|
|||
|
||||
impl !Send for Threshold {}
|
||||
|
||||
/// Sets an interrupt as pending
|
||||
pub fn set_pending<I>(interrupt: I)
|
||||
where
|
||||
I: Nr,
|
||||
{
|
||||
// NOTE(safe) atomic write
|
||||
let nvic = unsafe { &*cortex_m::peripheral::NVIC.get() };
|
||||
nvic.set_pending(interrupt);
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! task {
|
||||
($NAME:ident, $body:path) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue