vectors_cortexm.h

Default interrupt vectors shared by Cortex-M based CPUs.

WEAK_DEFAULT

Use this macro to make interrupt functions overridable with the dummy_handler as fallback in case they are not implemented.

1
__attribute__((weak,alias("dummy_handler")))
ISR_VECTOR( x)

Use this macro to define the parts of the vector table.

1
__attribute__((used,section(".vectors." # x )))

The entries in the vector table are sorted in ascending order defined by the (numeric) value given for x. The Cortex-M base vectors are always defined with ISR_VECTOR(0), so the CPU specific vector(s) must start from 1.

CPU_NONISR_EXCEPTIONS

Number of Cortex-M non-ISR exceptions.

1
(15)

This means those that are no hardware interrupts, or the ones with a negative interrupt number.

void(* isr_t()

All ISR functions have this type.

void reset_handler_default(void)

This function is the default entry point after a system reset.

After a system reset, the following steps are necessary and carried out:

  1. load data section from flash to ram
  2. overwrite uninitialized data section (BSS) with zeros
  3. initialize the board (sync clock, setup std-IO)
  4. initialize the newlib (optional, on when newlib is used)
  5. initialize and start RIOTs kernel

void nmi_default(void)

Non-maskable interrupt handler.

Non-maskable interrupts have the highest priority other than the reset event and can not be masked (surprise surprise…). They can be triggered by software and some peripherals. So far, they are not used in RIOT.

void hard_fault_default(void)

Hard fault exception handler.

Hard faults are triggered on errors during exception processing. Typical causes of hard faults are access to un-aligned pointers on Cortex-M0 CPUs and calls of function pointers that are set to NULL.

void dummy_handler_default(void)

Default handler used as weak alias for not implemented ISR vectors.

Per default, all interrupt handlers are mapped to the dummy handler using a weak symbol. This means the handlers can be (should be) overwritten in the RIOT code by just implementing a function with the name of the targeted interrupt routine.

struct cortexm_base_t

Structure of Cortex-M basic vector table.

vectors_cortexm.h::isr_t vectors()

shared Cortex-M vectors