Смотрите примеры которые идут с SPL или HAL - там все просто как 2х2. На внешние пины есть несколько обработчиков по группам пинов. Грабли в том, что нельзя если настроить прерывания на одинаковые пины разных портов, например РА1 и РВ1, то вызыватся будет одно и то же прерывание и определять какой пин сработал надо будет вручную. Вадно включить и сконфигурировать NVIC на преривание EXTI и так же само прерывание тоже включить

Комментарии: 9

  1. Maxim

    В СТМках не привыкать вручную определять, что сработало

    • Anonim

      Я всё это знаю, так и сделал, но не хочу делать через SPL или HAL. Есть идеи по моему коду?

      • Danil

        не только в стм кстати ну перепиши код из ХАЛа на регистрах - там в исходниках все есть же. Да и в инете миллиард статей про GPIO EXTI STM32 - хоть на ассемблере

        • Anonim

          Я и доки перечитал, и статьи, и форумы. Код перед вами, он не работает. Конфигурировал на разные порты и пины, но увы

          • Maxim

            Не работает - это просто контроллер игнорит прерывание, или виснет/падает в HardFault после него?

            • Danil

              некогда читать твой код, да и с мобилы неудобно делай дебаг по шагам. ставь бряк в обработчике прерывания. если сваливается в хардфолт, то вполне вероятно неправильно назван обработчик прерывания - какими библиотеками пользуешься? cmsis, spl, hal, opencm3?

            • Anonim

              Не, не виснет, просто пофиг ему

              • Danil

                Тогда скорее всего неправильно заводишь NVIC, или таки не включил прерывание на пин

                • Maxim

                  Если это плюсы, кстати, то проблема может быть в отсутствии extern "C" у обработчиков

Не нашли ответ?

Вам также может быть интересно