Смотрите примеры которые идут с SPL или HAL - там все просто как 2х2. На внешние пины есть несколько обработчиков по группам пинов. Грабли в том, что нельзя если настроить прерывания на одинаковые пины разных портов, например РА1 и РВ1, то вызыватся будет одно и то же прерывание и определять какой пин сработал надо будет вручную. Вадно включить и сконфигурировать NVIC на преривание EXTI и так же само прерывание тоже включить
Комментарии: 9
Maxim
В СТМках не привыкать вручную определять, что сработало
Anonim
Я всё это знаю, так и сделал, но не хочу делать через SPL или HAL. Есть идеи по моему коду?
Danil
не только в стм кстати ну перепиши код из ХАЛа на регистрах - там в исходниках все есть же. Да и в инете миллиард статей про GPIO EXTI STM32 - хоть на ассемблере
Anonim
Я и доки перечитал, и статьи, и форумы. Код перед вами, он не работает. Конфигурировал на разные порты и пины, но увы
Maxim
Не работает - это просто контроллер игнорит прерывание, или виснет/падает в HardFault после него?
Danil
некогда читать твой код, да и с мобилы неудобно делай дебаг по шагам. ставь бряк в обработчике прерывания. если сваливается в хардфолт, то вполне вероятно неправильно назван обработчик прерывания - какими библиотеками пользуешься? cmsis, spl, hal, opencm3?
Anonim
Не, не виснет, просто пофиг ему
Danil
Тогда скорее всего неправильно заводишь NVIC, или таки не включил прерывание на пин
Maxim
Если это плюсы, кстати, то проблема может быть в отсутствии extern "C" у обработчиков