Struct nrf52833_hal::pac::NVIC [−]
pub struct NVIC { /* fields omitted */ }
Expand description
Nested Vector Interrupt Controller
Implementations
impl NVIC
impl NVIC
pub fn request<I>(&mut self, interrupt: I) where
I: InterruptNumber,
pub fn request<I>(&mut self, interrupt: I) where
I: InterruptNumber,
Request an IRQ in software
Writing a value to the INTID field is the same as manually pending an interrupt by setting
the corresponding interrupt bit in an Interrupt Set Pending Register. This is similar to
NVIC::pend
.
This method is not available on ARMv6-M chips.
pub fn mask<I>(interrupt: I) where
I: InterruptNumber,
pub fn mask<I>(interrupt: I) where
I: InterruptNumber,
Disables interrupt
pub unsafe fn unmask<I>(interrupt: I) where
I: InterruptNumber,
pub unsafe fn unmask<I>(interrupt: I) where
I: InterruptNumber,
Enables interrupt
This function is unsafe
because it can break mask-based critical sections
pub fn get_priority<I>(interrupt: I) -> u8 where
I: InterruptNumber,
pub fn get_priority<I>(interrupt: I) -> u8 where
I: InterruptNumber,
Returns the NVIC priority of interrupt
NOTE NVIC encodes priority in the highest bits of a byte so values like 1
and 2
map
to the same priority. Also for NVIC priorities, a lower value (e.g. 16
) has higher
priority (urgency) than a larger value (e.g. 32
).
Is interrupt
active or pre-empted and stacked
pub fn is_enabled<I>(interrupt: I) -> bool where
I: InterruptNumber,
pub fn is_enabled<I>(interrupt: I) -> bool where
I: InterruptNumber,
Checks if interrupt
is enabled
pub fn is_pending<I>(interrupt: I) -> bool where
I: InterruptNumber,
pub fn is_pending<I>(interrupt: I) -> bool where
I: InterruptNumber,
Checks if interrupt
is pending
pub fn pend<I>(interrupt: I) where
I: InterruptNumber,
pub fn pend<I>(interrupt: I) where
I: InterruptNumber,
Forces interrupt
into pending state
pub unsafe fn set_priority<I>(&mut self, interrupt: I, prio: u8) where
I: InterruptNumber,
pub unsafe fn set_priority<I>(&mut self, interrupt: I, prio: u8) where
I: InterruptNumber,
Sets the “priority” of interrupt
to prio
NOTE See get_priority
method for an explanation
of how NVIC priorities work.
On ARMv6-M, updating an interrupt priority requires a read-modify-write operation. On ARMv7-M, the operation is performed in a single atomic write operation.
Unsafety
Changing priority levels can break priority-based critical sections (see
register::basepri
) and compromise memory safety.
pub fn unpend<I>(interrupt: I) where
I: InterruptNumber,
pub fn unpend<I>(interrupt: I) where
I: InterruptNumber,
Clears interrupt
’s pending state
impl NVIC
impl NVIC
Trait Implementations
Auto Trait Implementations
Blanket Implementations
Mutably borrows from an owned value. Read more
Casts the value.
Performs the conversion.
Performs the conversion.
Casts the value.
Casts the value.
Casts the value.
Casts the value.