Interrupts in the RP2350
In the previous chapter, we looked at what interrupts are and the role of the NVIC. Now, lets look at which interrupts are actually available on the RP2350.
Interrupts fall into two groups: system exceptions and external interrupts.
System exceptions are defined by the CPU architecture itself. These include reset, fault handlers, and the system timer. They behave the same way across most Cortex-M chips.
External interrupts come from peripherals on the RP2350. Each peripheral that can generate an interrupt has an IRQ number and a vector name. These are the names you will see in code.
The table below shows the external interrupts on the RP2350, numbered from 0 to 51. They cover common peripherals such as timers, GPIO, DMA, and communication interfaces like I2C, SPI, and UART.
You do not need to memorize this table. Its purpose is to help you recognize where names like I2C0_IRQ or UART0_IRQ come from when you see them in examples or documentation.
The full details are in the RP2350 datasheet, section 3.2 on page 82.
In the next chapter, we will see how Embassy uses these interrupts without requiring you to write interrupt handlers manually.
RP2350 External Interrupts
Important
Some interrupt descriptions are simplified here for a beginner-friendly overview. For more accurate and detailed information, refer to the RP2350 datasheet.
Timers
Timer alarms used for delays and scheduling.
| IRQ | Vector | Description |
|---|---|---|
| 0 | TIMER0_IRQ_0 | Timer 0 alarm interrupt |
| 1 | TIMER0_IRQ_1 | Timer 0 alarm interrupt |
| 2 | TIMER0_IRQ_2 | Timer 0 alarm interrupt |
| 3 | TIMER0_IRQ_3 | Timer 0 alarm interrupt |
| 4 | TIMER1_IRQ_0 | Timer 1 alarm interrupt |
| 5 | TIMER1_IRQ_1 | Timer 1 alarm interrupt |
| 6 | TIMER1_IRQ_2 | Timer 1 alarm interrupt |
| 7 | TIMER1_IRQ_3 | Timer 1 alarm interrupt |
PWM
PWM counter wrap events.
| IRQ | Vector | Description |
|---|---|---|
| 8 | PWM_IRQ_WRAP_0 | PWM wrap interrupt |
| 9 | PWM_IRQ_WRAP_1 | PWM wrap interrupt |
DMA
DMA transfer events.
| IRQ | Vector | Description |
|---|---|---|
| 10 | DMA_IRQ_0 | DMA transfer interrupt |
| 11 | DMA_IRQ_1 | DMA transfer interrupt |
| 12 | DMA_IRQ_2 | DMA transfer interrupt |
| 13 | DMA_IRQ_3 | DMA transfer interrupt |
USB
USB controller events.
| IRQ | Vector | Description |
|---|---|---|
| 14 | USBCTRL_IRQ | USB controller interrupt |
PIO
PIO state machine events.
| IRQ | Vector | Description |
|---|---|---|
| 15 | PIO0_IRQ_0 | PIO 0 interrupt |
| 16 | PIO0_IRQ_1 | PIO 0 interrupt |
| 17 | PIO1_IRQ_0 | PIO 1 interrupt |
| 18 | PIO1_IRQ_1 | PIO 1 interrupt |
| 19 | PIO2_IRQ_0 | PIO 2 interrupt |
| 20 | PIO2_IRQ_1 | PIO 2 interrupt |
GPIO and Core I/O
GPIO and core signaling events.
| IRQ | Vector | Description |
|---|---|---|
| 21 | IO_IRQ_BANK0 | GPIO interrupt |
| 22 | IO_IRQ_BANK0_NS | GPIO interrupt |
| 23 | IO_IRQ_QSPI | QSPI GPIO interrupt |
| 24 | IO_IRQ_QSPI_NS | QSPI GPIO interrupt |
| 25 | SIO_IRQ_FIFO | Inter-core FIFO interrupt |
| 26 | SIO_IRQ_BELL | Inter-core doorbell interrupt |
| 27 | SIO_IRQ_FIFO_NS | Inter-core FIFO interrupt |
| 28 | SIO_IRQ_BELL_NS | Inter-core doorbell interrupt |
| 29 | SIO_IRQ_MTIMECMP | System timer interrupt |
Communication Peripherals
Communication interface events.
| IRQ | Vector | Description |
|---|---|---|
| 30 | CLOCKS_IRQ | Clock system interrupt |
| 31 | SPI0_IRQ | SPI interrupt |
| 32 | SPI1_IRQ | SPI interrupt |
| 33 | UART0_IRQ | UART interrupt |
| 34 | UART1_IRQ | UART interrupt |
| 35 | ADC_IRQ_FIFO | ADC FIFO interrupt |
| 36 | I2C0_IRQ | I2C interrupt |
| 37 | I2C1_IRQ | I2C interrupt |
System and Power
System and power management events.
| IRQ | Vector | Description |
|---|---|---|
| 38 | OTP_IRQ | OTP interrupt |
| 39 | TRNG_IRQ | Random number generator interrupt |
| 40 | Reserved | Reserved |
| 41 | Reserved | Reserved |
| 42 | PLL_SYS_IRQ | System PLL interrupt |
| 43 | PLL_USB_IRQ | USB PLL interrupt |
| 44 | POWMAN_IRQ_POW | Power manager interrupt |
| 45 | POWMAN_IRQ_TIMER | Power manager timer interrupt |
Software IRQs
Interrupts that can be triggered by software.
| IRQ | Vector | Description |
|---|---|---|
| 46 | SPAREIRQ_IRQ_0 | Software interrupt |
| 47 | SPAREIRQ_IRQ_1 | Software interrupt |
| 48 | SPAREIRQ_IRQ_2 | Software interrupt |
| 49 | SPAREIRQ_IRQ_3 | Software interrupt |
| 50 | SPAREIRQ_IRQ_4 | Software interrupt |
| 51 | SPAREIRQ_IRQ_5 | Software interrupt |