All tools
NVIC priority simulator.
Pick your implemented priority bits + PRIGROUP, add IRQs, see exactly how the byte gets split into preempt + sub-priority. The execution chain shows what would happen if everything fired at once; the matrix shows every pairwise preempt relationship.
NVIC configuration
Priority byte layout
7
6
5
4
3
2
1
0
preemptsubunused
IRQ sources
Priority decode
sorted: highest priority firstIf all IRQs pend simultaneously
execution order ↓- preempt 1runs to completion
- 1.TIM1_IRQ(sub 0)
- preempt 4 · 2 co-pendingserialised by sub-priority
- 1.USART2_IRQ(sub 0)
- 2.EXTI0_IRQ(sub 0)
- preempt 15 · 2 co-pendingserialised by sub-priority
- 1.SysTick(sub 0)
- 2.PendSV(sub 0)
IRQs at the same preempt level can't preempt each other — whichever fires first runs to completion. Sub-priority only breaks the tie when they pend simultaneously.
Preemption matrix
Read as: "if row is currently running, can column preempt it?"