Ядро Cortex-M3 определяет сложный механизм приоритетов, который позволяет источникам прерываний назначать как приоритет, так и суб-приоритет. На данном уровне приоритета два источника прерываний обслуживаются в порядке их приоритетности (более низкое число имеет приоритет). Если обработчик прерываний активен и приходит другое прерывание с более низким номером приоритета, активный обработчик будет прерван. Cortex-M3 определяет до 8 битов уровня приоритета, которые могут быть разделены между полями приоритета и субприоритета. Процессор STM32 реализует только 4 из этих битов. Мы будем использовать конфигурацию, в которой 0 битов выделяются для приоритета, а 4 бита выделяются для субприоритета.
Механизм приоритета прерываний управляется через NVIC (Nested Vectored Interrupt Controller), который является стандартным периферийным устройством для всех процессоров на базе CortexM3. NVIC предоставляет следующие функции для каждого источника прерывания:
• Приоритетная и субприоритетная конфигурация.
• Включить (отключить) прерывание.
• Установить / сбросить бит ожидания прерывания.