STM32 Удобные внешние прерывания

STM32 Удобные внешние прерывания

При изучении STM32 меня приятно удивило большое количество внешних прерываний (всего 16), да и еще возможность настроить их на любой пин микроконтроллера. Такой расклад после того, как долгое время сидел на AVR — кажется фантастичным. Однако при детальном изучении радость моя несколько поуменьшилась. Оказывается, есть и ограничения:
1) Настроить прерывания можно только на один из входов, где совпадает нумерация порта.
Например, настроить два прерывания на GPIOA.0 и GPIOB.0 — не получится. Только одно из них. Это необходимо учитывать при разводке схемы.
2) Отсутствует способ вызова прерываний по нижнему уровню (иногда требуется именно этот способ, например при сочленении с WIZnet). Хотя этот недочет, в принципе, — программно решаемый.
3) Всего 7 векторов в прерываниях. А событий — 16. А это значит, что обработка нескольких событий производится в одном и том же месте.

Но даже такое положение вещей все равно гораздо более привлекательное, чем в старом-добром AVR-e.

Цель написания этой статьи — разбавить 3-е по списку ограничение — недостаток векторов, упрощение инициализации внешних прерываний. И напоследок, разберемся, что такое «слабосвязанные функции» и с чем их едят (С) Умка :). Итак, начнем:


Читать дальше