Maskable vs Non-Maskable

...

When is an interrupt masked?
An interrupt is masked when it has been disabled using designated mask bits for the interrupt.

When is masking used?
Masking is used when executing high priority timing sensitive code that would be disrupted by an interrupt.

What is a Non-Maskable Interrupt (NMI)?
An NMI is an interrupt generated by critical system processes.

What does a Non-Maskable Interrupt (NMI) indicate?
An NMI indicates a critical error has occurred and the system is about to crash.

Are exceptions considered Non-Maskable Interrupts (NMIs)?
Yes, exceptions are considered NMIs.

Interrupt Handling

What is the sequence of events for handling an interrupt?
The sequence of events for handling an interrupt is:

  1. The programs begins execution in main().
  2. An interrupt signal is detected, the processor stops, and registers r0-r3, r12, lr, pc, and psr are pushed onto the stack.
  3. The PC is set to the memory address of the SysTick_Handler routine.
  4. The Interrupt Service Routine (ISR) is executed.
  5. The interrupt returns, the active bits are cleared, and the registers previously added to the stack are popped off.
  6. The programs continues execution where it was interrupted.

Interrupt Vector Table

What does each interrupt have?
Each interrupt has an associated ISR.

What is the interrupt vector table?
The interrupt vector table is a special area of memory that contains the memory addresses (pointers) of each ISR.

...