Проблема с включением канала NVIC IRQn в STM32F407 - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь использовать контроллер 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();
...