pub struct SCB { /* private fields */ }
Expand description
System Control Block
Implementations§
Source§impl SCB
impl SCB
Sourcepub fn disable_fpu(&mut self)
pub fn disable_fpu(&mut self)
Shorthand for set_fpu_access_mode(FpuAccessMode::Disabled)
Sourcepub fn enable_fpu(&mut self)
pub fn enable_fpu(&mut self)
Shorthand for set_fpu_access_mode(FpuAccessMode::Enabled)
Sourcepub fn fpu_access_mode() -> FpuAccessMode
pub fn fpu_access_mode() -> FpuAccessMode
Gets FPU access mode
Sourcepub fn set_fpu_access_mode(&mut self, mode: FpuAccessMode)
pub fn set_fpu_access_mode(&mut self, mode: FpuAccessMode)
Sets FPU access mode
IMPORTANT Any function that runs fully or partly with the FPU disabled must not take any floating-point arguments or have any floating-point local variables. Because the compiler might inline such a function into a caller that does have floating-point arguments or variables, any such function must be also marked #[inline(never)].
Source§impl SCB
impl SCB
Sourcepub fn vect_active() -> VectActive
pub fn vect_active() -> VectActive
Returns the active exception number
Source§impl SCB
impl SCB
Sourcepub fn enable_icache(&mut self)
pub fn enable_icache(&mut self)
Enables I-Cache if currently disabled
Sourcepub fn disable_icache(&mut self)
pub fn disable_icache(&mut self)
Disables I-Cache if currently enabled
Sourcepub fn icache_enabled() -> bool
pub fn icache_enabled() -> bool
Returns whether the I-Cache is currently enabled
Sourcepub fn invalidate_icache(&mut self)
pub fn invalidate_icache(&mut self)
Invalidates I-Cache
Sourcepub fn enable_dcache(&mut self, cpuid: &mut CPUID)
pub fn enable_dcache(&mut self, cpuid: &mut CPUID)
Enables D-cache if currently disabled
Sourcepub fn disable_dcache(&mut self, cpuid: &mut CPUID)
pub fn disable_dcache(&mut self, cpuid: &mut CPUID)
Disables D-cache if currently enabled
Sourcepub fn dcache_enabled() -> bool
pub fn dcache_enabled() -> bool
Returns whether the D-Cache is currently enabled
Sourcepub fn clean_dcache(&mut self, cpuid: &mut CPUID)
pub fn clean_dcache(&mut self, cpuid: &mut CPUID)
Cleans D-cache
Sourcepub fn clean_invalidate_dcache(&mut self, cpuid: &mut CPUID)
pub fn clean_invalidate_dcache(&mut self, cpuid: &mut CPUID)
Cleans and invalidates D-cache
Sourcepub fn invalidate_dcache_by_address(&mut self, addr: usize, size: usize)
pub fn invalidate_dcache_by_address(&mut self, addr: usize, size: usize)
Invalidates D-cache by address
addr
: the address to invalidate
size
: size of the memory block, in number of bytes
Invalidates cache starting from the lowest 32-byte aligned address represented by addr
,
in blocks of 32 bytes until at least size
bytes have been invalidated.
Sourcepub fn clean_dcache_by_address(&mut self, addr: usize, size: usize)
pub fn clean_dcache_by_address(&mut self, addr: usize, size: usize)
Cleans D-cache by address
addr
: the address to clean
size
: size of the memory block, in number of bytes
Cleans cache starting from the lowest 32-byte aligned address represented by addr
,
in blocks of 32 bytes until at least size
bytes have been cleaned.
Sourcepub fn clean_invalidate_dcache_by_address(&mut self, addr: usize, size: usize)
pub fn clean_invalidate_dcache_by_address(&mut self, addr: usize, size: usize)
Cleans and invalidates D-cache by address
addr
: the address to clean and invalidate
size
: size of the memory block, in number of bytes
Cleans and invalidates cache starting from the lowest 32-byte aligned address represented
by addr
, in blocks of 32 bytes until at least size
bytes have been cleaned and
invalidated.
Source§impl SCB
impl SCB
Sourcepub fn set_sleepdeep(&mut self)
pub fn set_sleepdeep(&mut self)
Set the SLEEPDEEP bit in the SCR register
Sourcepub fn clear_sleepdeep(&mut self)
pub fn clear_sleepdeep(&mut self)
Clear the SLEEPDEEP bit in the SCR register
Source§impl SCB
impl SCB
Sourcepub fn set_sleeponexit(&mut self)
pub fn set_sleeponexit(&mut self)
Set the SLEEPONEXIT bit in the SCR register
Sourcepub fn clear_sleeponexit(&mut self)
pub fn clear_sleeponexit(&mut self)
Clear the SLEEPONEXIT bit in the SCR register
Source§impl SCB
impl SCB
Sourcepub fn set_pendsv()
pub fn set_pendsv()
Set the PENDSVSET bit in the ICSR register which will pend the PendSV interrupt
Sourcepub fn is_pendsv_pending() -> bool
pub fn is_pendsv_pending() -> bool
Check if PENDSVSET bit in the ICSR register is set meaning PendSV interrupt is pending
Sourcepub fn clear_pendsv()
pub fn clear_pendsv()
Set the PENDSVCLR bit in the ICSR register which will clear a pending PendSV interrupt
Sourcepub fn set_pendst()
pub fn set_pendst()
Set the PENDSTSET bit in the ICSR register which will pend a SysTick interrupt
Sourcepub fn is_pendst_pending() -> bool
pub fn is_pendst_pending() -> bool
Check if PENDSTSET bit in the ICSR register is set meaning SysTick interrupt is pending
Sourcepub fn clear_pendst()
pub fn clear_pendst()
Set the PENDSTCLR bit in the ICSR register which will clear a pending SysTick interrupt
Source§impl SCB
impl SCB
Sourcepub fn get_priority(system_handler: SystemHandler) -> u8
pub fn get_priority(system_handler: SystemHandler) -> u8
Returns the hardware priority of system_handler
NOTE: Hardware priority does not exactly match logical priority levels. See
NVIC.get_priority
for more details.
Sourcepub unsafe fn set_priority(&mut self, system_handler: SystemHandler, prio: u8)
pub unsafe fn set_priority(&mut self, system_handler: SystemHandler, prio: u8)
Sets the hardware priority of system_handler
to prio
NOTE: Hardware priority does not exactly match logical priority levels. See
NVIC.get_priority
for more details.
On ARMv6-M, updating a system handler 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.
Sourcepub fn enable(&mut self, exception: Exception)
pub fn enable(&mut self, exception: Exception)
Enable the exception
If the exception is enabled, when the exception is triggered, the exception handler will be executed instead of the HardFault handler. This function is only allowed on the following exceptions:
MemoryManagement
BusFault
UsageFault
SecureFault
(can only be enabled from Secure state)
Calling this function with any other exception will do nothing.
Sourcepub fn disable(&mut self, exception: Exception)
pub fn disable(&mut self, exception: Exception)
Disable the exception
If the exception is disabled, when the exception is triggered, the HardFault handler will be executed instead of the exception handler. This function is only allowed on the following exceptions:
MemoryManagement
BusFault
UsageFault
SecureFault
(can not be changed from Non-secure state)
Calling this function with any other exception will do nothing.
Sourcepub fn is_enabled(&self, exception: Exception) -> bool
pub fn is_enabled(&self, exception: Exception) -> bool
Check if an exception is enabled
This function is only allowed on the following exception:
MemoryManagement
BusFault
UsageFault
SecureFault
(can not be read from Non-secure state)
Calling this function with any other exception will read false
.