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

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

Этот раздел посвящен управлению прерываниями и контроллеру NVIC. Знание этих технологий позволяет создавать более отзывчивые и эффективные приложения на STM32.

3 аудио · 2:08

Nortren·

Что такое прерывание в микроконтроллере?

0:38
Прерывание — это сигнал от аппаратуры или программного обеспечения, который заставляет процессор приостановить текущее выполнение, сохранить контекст и перейти к специальной функции — обработчику прерывания. После завершения обработчика процессор восстанавливает контекст и продолжает с того места, где остановился. Прерывания позволяют реагировать на внешние события — пришедший байт по UART, истёкший таймер, нажатую кнопку — без постоянного опроса периферии в цикле. Это основа эффективного embedded-программирования.

Что такое NVIC в Cortex-M?

0:45
NVIC расшифровывается как Nested Vectored Interrupt Controller, вложенный векторный контроллер прерываний. Это встроенный в ядро Cortex-M блок, управляющий всеми прерываниями: разрешением, приоритетами, и вызовом нужного обработчика. Векторный означает, что для каждого источника прерывания есть свой адрес обработчика в таблице векторов, и переход выполняется напрямую без программного диспетчера. Вложенный означает, что прерывание с более высоким приоритетом может прервать обработчик прерывания с более низким приоритетом. NVIC поддерживает до двухсот сорока внешних прерываний.

В чём разница между polling, прерыванием и DMA?

0:45
Это три способа взаимодействия с периферией. Polling — это постоянный опрос регистра в цикле, ожидая нужного состояния. Просто, но процессор занят бесполезной работой и не может делать ничего другого. Прерывание освобождает процессор: периферия сама сигнализирует о готовности данных, и обработчик отрабатывает только когда это нужно. DMA — это прямой доступ к памяти: специальный контроллер переносит данные между периферией и памятью без участия процессора вообще. DMA — самый эффективный способ для больших объёмов данных, например при работе с ADC или SPI на высокой скорости.