1. 1
Система прерываний
Вопросы:
1. Блоки обслуживания прерывающих событий
2. Организация прерываний в микроконтроллерах
STM32.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
2. 2
1. Блоки обслуживания прерывающих событий.
Прерывание (англ. interrupt) — сигнал от программного или
аппаратного обеспечения, сообщающий процессору о наступлении
какого-либо события, требующего немедленного внимания.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
3. 3
В зависимости от источника, прерывания можно разделить на
три типа.
• Асинхронные (или внешние) – это такие события, которые
исходят от внешних источников, таких как периферийные
устройства, а значит, могут произойти в произвольный
момент времени. Факт возникновения в системе такого
прерывания трактуется как запрос на прерывание (англ.
Interrupt ReQuest, IRQ).
• Синхронные (или внутренние) – это события
непосредственно в ядре, и возникают они как следствие
нарушения каких-то условий при исполнении кода: деление
на ноль, переполнение стека, обращение к недопустимым
адресам памяти и т. д.
• Программные (частный случай внутреннего прерывания) –
прерывание может быть вызвано непосредственно в коде
исполняемой программы.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
4. 4
Суть обработки прерывающего события сводится к
следующим действиям:
• обнаружение факта прерывающего события
• установление необходимости реакции на него
• выполнение арбитража событий
• выполнение переключения программного контекста
• выполнение восстановления программного
контекста
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
5. 5
tp – время реакции системы на прерывание;
tз – время запоминания состояния прерываемой
программы;
tппр – время собственно прерывающей программы;
tв – время восстановления состояния прерванной
программы
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
6. 6
2. Организация прерываний в микроконтроллерах
STM32.
При возникновении прерывания от периферийного
устройства, NVIC начинает перевод ЦПУ Cortex в
режим обработки прерывания. Как только ЦПУ
Cortex входит в режим обработки прерывания, оно
сохраняет значения набора регистров в стек.
Важно то, что это осуществляет микрокод, то есть
не требуется дополнительных команд в коде
приложения. В то время как в стеке сохраняются
данные, извлекается начальный адрес процедуры
обработки прерываний. Таким образом, с момента
возникновения прерывания до начала выполнения
первой команды процедуры обработки прерывания
проходит только 12 циклов.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
7. 7
Особенности прерываний STM32
• все прерывания независимо
включаются/выключаются
• прерывания имеют приоритет
• могут быть вызваны программно
• если для прерывания нет обработчика, а оно
возникло, то будет вызван обработчик по
умолчанию
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
10. 10
Для использования NVIC нужно
• сконфигурировать таблицу векторов для
источников прерываний
• установить приоритеты и разрешить прерывания,
• сконфигурировав регистры NVIC настроить
периферийные устройства и разрешить их
прерывания
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады