NVIC
Nested Vectored Interrupt Controller — de interruptcontroller die in elke ARM Cortex-M-kern is ingebouwd.
Hij houdt bij welke interrupts zijn ingeschakeld, welke in afwachting zijn en welke prioriteit ze hebben, en laat een belangrijker interrupt een minder belangrijke onderbreken halverwege diens handler — vandaar "nested". Bij binnenkomst zet de hardware zelf acht registers op de stack, waardoor Cortex-M-interrupthandlers gewone C-functies kunnen zijn zonder assemblerwrapper. Op een Cortex-M3 of M4 duurt het twaalf cycli van signaal tot eerste instructie.
Twee trucs verlagen de latentie nog verder: tail-chaining springt direct naar de volgende wachtende handler zonder te ontstapelen en opnieuw te stapelen, en late arrival laat een interrupt met hogere prioriteit het overnemen terwijl de stack nog wordt geschreven. De klassieke valkuil is dat een lager getal een hogere prioriteit betekent, en dat fabrikanten alleen de bovenste bits implementeren — vier van de acht bij STM32.