Я пытаюсь использовать контроллер NVIC для проверки доступности данных с периферийного устройства.Периферийное устройство подключается к внешней линии прерывания через вывод порта GPIO.Я настроил этот вывод для работы в качестве внешнего прерывания и имеет номер прерывания, равный IRQn (как видно из функций).
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); //This has all 4 bits as preemption priority bits
HAL_NVIC_SetPriority(IRQn, 0, 0);
HAL_NVIC_EnableIRQ(IRQn);
Проблема заключается в том, что я пытаюсь использовать приведенную ниже функцию
HAL_NVIC_GetPendingIRQ(IRQn)
Мой код все еще будет выполняться, потому что, когда прерывание не активно, оно все еще находится в состоянии ожидания.Я не знаю, может ли проблема существовать внутри процессора и некоторых конфигураций, которые мне не хватает.В Интернете я обнаружил, что предыдущих строк достаточно для реализации NVIC, но он не работает.
PS: это запрограммировано на языке C, и я использую макросы и функции драйвера HAL, как вы можете видеть поHAL- префикс.Кроме того, при опросе этой конкретной внешней линии прерывания она работает нормально, т.е.
__HAL_GPIO_EXTI_GET_IT();