Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу настроить прерывание на одну из ног STM32
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
zheka
Господа, настраиваю на прерывание по спаду ноги STM32F103VG - PA9, PA10, PC15.

Вот код:
Код
///////////////////////////////////////////
// ВНЕШНИЕ ПРЕРЫВАНИЯ
///////////////////////////////////////////

   AFIO->EXTICR[2]|=(AFIO_EXTICR3_EXTI9_PA | AFIO_EXTICR3_EXTI10_PA | AFIO_EXTICR4_EXTI15_PC);
   EXTI->IMR|=(EXTI_IMR_MR9 | EXTI_IMR_MR10 | EXTI_IMR_MR15);
   EXTI->FTSR|=(EXTI_FTSR_TR9 | EXTI_FTSR_TR10 | EXTI_FTSR_TR15);
   NVIC_EnableIRQ (EXTI9_5_IRQn);
   NVIC_EnableIRQ (EXTI15_10_IRQn);


а вот обработчик

Код
void EXTI15_10_IRQHandler(void)
{
if (EXTI->PR & (1<<10))
   {    
     EXTI_ClearITPendingBit(EXTI_Line10);            
   }
  
if (EXTI->PR & (1<<15))
   {    
     OneWire_flag=1;     
    EXTI_ClearITPendingBit(EXTI_Line15);    

   }    
    
NVIC_ClearPendingIRQ(EXTI15_10_IRQn);
}


ножки порта A ловят спад сигнала, а вот PC15 молчит. Что я настроил не так?

Попутно вопрос - у меня на PC15 1wire сидит, естественно, эта нога постоянно переключатеся со входа на выход и наоборот. Нужно ли в моменты этих переходов как то включать, выключать прерывания?
MiklPolikov
Лично я работаю с STM32L151 , там немного по-другому.
Но всё же, проверьте это :

AFIO->EXTICR[2]|=(AFIO_EXTICR3_EXTI9_PA | AFIO_EXTICR3_EXTI10_PA | AFIO_EXTICR4_EXTI15_PC);

скорее всего AFIO_EXTICR4_EXTI15_PC надо писать в EXTICR[3]
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.