реклама на сайте
подробности

 
 
> Прерывание EXTI
juvf
сообщение Nov 5 2016, 10:30
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



st32f401. Поподаю в прерывание EXTI3_IRQHandler(). Флаги прерывания нулю равны, но прерывание срабатывает. Не могу понять почему. Вот обработчик дебажный
Цитата
extern "C" void EXTI3_IRQHandler()
{
static uint32_t a;
a = EXTI->PR;
EXTI_ClearFlag(EXTI_Line3);
}
EXTI->PR равно нулю. а всегда равна нулю. Почему попадаю в прерывание. Как это отловить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Nov 5 2016, 21:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(juvf @ Nov 5 2016, 13:30) *
Почему попадаю в прерывание. Как это отловить?

Видимо, вы его разрешили и сконфигурировали - вот и попадаете.
Вопрос не понятный: вас смущает, что вообще прерывание возникает? или что оно и должно возникать, но PR при этом нулевой?

Есть у Cortex такая штука как повторный вход в прерывание по уму обработчик должен проверять условие.
Например,
Код
void EXTI0_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line0) != RESET)
  {
    /* Toggle LED3 */
    STM_EVAL_LEDToggle(LED3);
    
    /* Clear the EXTI line 0 pending bit */
    EXTI_ClearITPendingBit(EXTI_Line0);
  }
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th August 2025 - 21:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016