В типичном микроконтроллере существуют сотни или даже тысячи потенциальных источников прерываний.В зависимости от приложения только некоторые из них будут важны, а еще меньше будут действительно критичны по времени.
Для порта GPIO вы обычно активируете только те контакты, которые интересны для генерации прерывания.Если вы можете организовать только один вывод порта для генерации прерывания, задание выполнено, ваш обработчик для этого порта может выполнить работу, безопасно зная, что он будет вызываться только тогда, когда правильный выводactive.
Когда вы заботитесь о причине в пределах одного периферийного устройства и не можете позволить себе роскошь использовать индивидуально управляемые обработчики, вам необходимо прибегнуть к подходу «без векторов» и проверить регистры состояния передопределить, какую возможную функцию-обработчик нужно вызвать.
Интересно, что вы не можете определить, какой вывод вызвал прерывание - все, что вы видите, это то, какие выводы все еще активны, как только вы получитеРаунд для опроса регистра статуса.Если вы заботитесь о фазе между двумя импульсами, вы не сможете достичь этой дискриминации в пределах одного GPIO, если не будет выделенной аппаратной поддержки.Даже несколько векторов исключений не помогут, если только вы не уверены, что первое исключение всегда берется до того, как может быть установлен второй вывод.