Struct microbit::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: Nr,
pub fn request<I>(&mut self, interrupt: I) where
I: Nr,
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
set_pending.
This method is not available on ARMv6-M chips.
pub fn clear_pending<I>(&mut self, interrupt: I) where
I: Nr,
👎 Deprecated since 0.5.8: Use NVIC::unpend
pub fn clear_pending<I>(&mut self, interrupt: I) where
I: Nr,
Use NVIC::unpend
Clears interrupt’s pending state
pub fn mask<I>(interrupt: I) where
I: Nr,
pub fn mask<I>(interrupt: I) where
I: Nr,
Disables interrupt
pub unsafe fn unmask<I>(interrupt: I) where
I: Nr,
pub unsafe fn unmask<I>(interrupt: I) where
I: Nr,
Enables interrupt
This function is unsafe because it can break mask-based critical sections
pub fn disable<I>(&mut self, interrupt: I) where
I: Nr,
👎 Deprecated since 0.6.1: Use NVIC::mask
pub fn disable<I>(&mut self, interrupt: I) where
I: Nr,
Use NVIC::mask
Disables interrupt
pub fn enable<I>(&mut self, interrupt: I) where
I: Nr,
👎 Deprecated since 0.6.1: Use NVIC::unmask
pub fn enable<I>(&mut self, interrupt: I) where
I: Nr,
Use NVIC::unmask
WARNING This method is a soundness hole in the API; it should actually be an unsafe
function. Use NVIC::unmask which has the right unsafety.
pub fn get_priority<I>(interrupt: I) -> u8 where
I: Nr,
pub fn get_priority<I>(interrupt: I) -> u8 where
I: Nr,
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: Nr,
pub fn is_enabled<I>(interrupt: I) -> bool where
I: Nr,
Checks if interrupt is enabled
pub fn is_pending<I>(interrupt: I) -> bool where
I: Nr,
pub fn is_pending<I>(interrupt: I) -> bool where
I: Nr,
Checks if interrupt is pending
pub fn pend<I>(interrupt: I) where
I: Nr,
pub fn pend<I>(interrupt: I) where
I: Nr,
Forces interrupt into pending state
pub fn set_pending<I>(&mut self, interrupt: I) where
I: Nr,
👎 Deprecated since 0.5.8: Use NVIC::pend
pub fn set_pending<I>(&mut self, interrupt: I) where
I: Nr,
Use NVIC::pend
Forces interrupt into pending state
pub unsafe fn set_priority<I>(&mut self, interrupt: I, prio: u8) where
I: Nr,
pub unsafe fn set_priority<I>(&mut self, interrupt: I, prio: u8) where
I: Nr,
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: Nr,
pub fn unpend<I>(interrupt: I) where
I: Nr,
Clears interrupt’s pending state
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.