vectors_cortexm.h File Reference

Default interrupt vectors shared by Cortex-M based CPUs. More...

Detailed Description

Go to the source code of this file.

#define WEAK_DEFAULT   __attribute__((weak,alias("dummy_handler")))
 Use this macro to make interrupt functions overridable with the dummy_handler as fallback in case they are not implemented.
 
#define ISR_VECTORS   __attribute__((used,section(".vectors")))
 Put this macro in front of the array holding the interrupt vectors.
 
#define CPU_NONISR_EXCEPTIONS   (15)
 Number of Cortex-M non-ISR exceptions. More...
 
void reset_handler_default (void)
 This function is the default entry point after a system reset. More...
 
void nmi_default (void)
 Non-maskable interrupt handler. More...
 
void hard_fault_default (void)
 Hard fault exception handler. More...
 
void dummy_handler_default (void)
 Default handler used as weak alias for not implemented ISR vectors. More...
 

Macro Definition Documentation

#define CPU_NONISR_EXCEPTIONS   (15)

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

Definition at line 43 of file vectors_cortexm.h.

Function Documentation

void dummy_handler_default ( void  )

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.

void hard_fault_default ( void  )

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 nmi_default ( void  )

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 reset_handler_default ( void  )

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