Interrupts may be triggered by many possible events including the system timer, memory access faults, external resets, and by all of the various peripherals provided on the STM32 processor. It is easiest to view each possible interrupt source as a separate signal that is monitored by the processor core during program execution. If the core detects a valid interrupt signal and is configured to accept interrupt requests, it reacts by saving the state of the currently executing program on the program stack and executing a handler (sometimes called an interrupt service routine) corresponding to the accepted interrupt. When the handler terminates, the saved program state is restored
and normal program execution is resumed