Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Прерывания в RP2350

В предыдущей главе мы рассмотрели, что такое прерывания и какую роль играет NVIC. Теперь давайте посмотрим, какие прерывания на самом деле доступны в RP2350.

Прерывания делятся на две группы: системные исключения и внешние прерывания.

Системные исключения определены самой архитектурой процессора. К ним относятся сброс, обработчики сбоев и системный таймер. На большинстве чипов Cortex-M они работают одинаково.

Внешние прерывания приходят от периферии RP2350. У каждого периферийного модуля, который может генерировать прерывание, есть номер IRQ и имя вектора. Именно эти имена вы будете видеть в коде.

Таблица ниже показывает внешние прерывания RP2350, пронумерованные от 0 до 51. Они охватывают распространённую периферию, например таймеры, GPIO, DMA и интерфейсы связи вроде I2C, SPI и UART.

Запоминать эту таблицу не нужно. Её назначение — помочь понять, откуда берутся такие имена, как I2C0_IRQ или UART0_IRQ, когда вы встречаете их в примерах или документации.

Полные подробности см. в разделе 3.2 даташита RP2350 на странице 82.

В следующей главе мы увидим, как Embassy использует эти прерывания, не требуя от вас писать обработчики прерываний вручную.

Внешние прерывания RP2350

Important

Некоторые описания прерываний здесь упрощены для удобного обзора для начинающих. Более точные и подробные сведения см. в даташите RP2350.

Таймеры

Аварийные сигналы таймеров, используемые для задержек и планирования.

IRQВекторОписание
0TIMER0_IRQ_0Прерывание аварийного сигнала таймера 0
1TIMER0_IRQ_1Прерывание аварийного сигнала таймера 0
2TIMER0_IRQ_2Прерывание аварийного сигнала таймера 0
3TIMER0_IRQ_3Прерывание аварийного сигнала таймера 0
4TIMER1_IRQ_0Прерывание аварийного сигнала таймера 1
5TIMER1_IRQ_1Прерывание аварийного сигнала таймера 1
6TIMER1_IRQ_2Прерывание аварийного сигнала таймера 1
7TIMER1_IRQ_3Прерывание аварийного сигнала таймера 1

ШИМ

События переполнения счётчика ШИМ.

IRQВекторОписание
8PWM_IRQ_WRAP_0Прерывание переполнения ШИМ
9PWM_IRQ_WRAP_1Прерывание переполнения ШИМ

DMA

События передачи DMA.

IRQВекторОписание
10DMA_IRQ_0Прерывание передачи DMA
11DMA_IRQ_1Прерывание передачи DMA
12DMA_IRQ_2Прерывание передачи DMA
13DMA_IRQ_3Прерывание передачи DMA

USB

События контроллера USB.

IRQВекторОписание
14USBCTRL_IRQПрерывание контроллера USB

PIO

События конечных автоматов PIO.

IRQВекторОписание
15PIO0_IRQ_0Прерывание PIO 0
16PIO0_IRQ_1Прерывание PIO 0
17PIO1_IRQ_0Прерывание PIO 1
18PIO1_IRQ_1Прерывание PIO 1
19PIO2_IRQ_0Прерывание PIO 2
20PIO2_IRQ_1Прерывание PIO 2

GPIO и базовый ввод-вывод

События GPIO и межъядерной сигнализации.

IRQВекторОписание
21IO_IRQ_BANK0Прерывание GPIO
22IO_IRQ_BANK0_NSПрерывание GPIO
23IO_IRQ_QSPIПрерывание GPIO QSPI
24IO_IRQ_QSPI_NSПрерывание GPIO QSPI
25SIO_IRQ_FIFOПрерывание FIFO между ядрами
26SIO_IRQ_BELLПрерывание doorbell между ядрами
27SIO_IRQ_FIFO_NSПрерывание FIFO между ядрами
28SIO_IRQ_BELL_NSПрерывание doorbell между ядрами
29SIO_IRQ_MTIMECMPПрерывание системного таймера

Периферия связи

События интерфейсов связи.

IRQВекторОписание
30CLOCKS_IRQПрерывание системы тактирования
31SPI0_IRQПрерывание SPI
32SPI1_IRQПрерывание SPI
33UART0_IRQПрерывание UART
34UART1_IRQПрерывание UART
35ADC_IRQ_FIFOПрерывание FIFO АЦП
36I2C0_IRQПрерывание I2C
37I2C1_IRQПрерывание I2C

Система и питание

События управления системой и питанием.

IRQВекторОписание
38OTP_IRQПрерывание OTP
39TRNG_IRQПрерывание генератора случайных чисел
40ReservedЗарезервировано
41ReservedЗарезервировано
42PLL_SYS_IRQПрерывание системной PLL
43PLL_USB_IRQПрерывание PLL USB
44POWMAN_IRQ_POWПрерывание менеджера питания
45POWMAN_IRQ_TIMERПрерывание таймера менеджера питания

Программные прерывания

Прерывания, которые можно вызвать программно.

IRQВекторОписание
46SPAREIRQ_IRQ_0Программное прерывание
47SPAREIRQ_IRQ_1Программное прерывание
48SPAREIRQ_IRQ_2Программное прерывание
49SPAREIRQ_IRQ_3Программное прерывание
50SPAREIRQ_IRQ_4Программное прерывание
51SPAREIRQ_IRQ_5Программное прерывание