Crate cortex_m [] [src]

Low level access to Cortex-M processors

This crate provides:

  • Access to core peripherals like NVIC, SCB and SysTick.
  • Access to core registers like CONTROL, MSP and PSR.
  • Interrupt manipulation mechanisms
  • Safe wrappers around Cortex-M specific instructions like bkpt

Requirements

To use this crate on the stable or beta channel arm-none-eabi-gcc needs to be installed and available in your $PATH.

Optional features

inline-asm

When this feature is enabled the implementation of all the functions inside the asm and register modules use inline assembly (asm!) instead of external assembly (FFI into separate assembly files compiled using arm-none-eabi-gcc). The advantages the enabling inline-asm are:

  • Reduced overhead. FFI eliminates the possibility of inlining so all operations include a function call overhead when inline-asm is not enabled.

  • arm-none-eabi-gcc is not required for building this crate.

  • Some of the register API only becomes available only when inline-asm is enabled. Check the API docs for details.

The disadvantage is that inline-asm requires a nightly toolchain.

const-fn

Enabling this feature turns the Mutex.new constructor into a const fn.

This feature requires a nightly toolchain.

Re-exports

pub use peripheral::Peripherals;

Modules

asm

Miscellaneous assembly instructions

interrupt

Interrupts

itm

Instrumentation Trace Macrocell

peripheral

Core peripherals

register

Processor core registers

Macros

iprint

Macro for sending a formatted string through an ITM channel

iprintln

Macro for sending a formatted string through an ITM channel, with a newline.

singleton

Macro to create a mutable reference to a statically allocated value