Прерывание как бы срабатывает, но походу "зависает" на переходе в функцию прерывания.
Насколько я понял необходимо установить вектор прерывания.
Но не могу понять как.
Вот так инициализирую:
Код: Выделить всё
void EXTILine0_Config(void) {
//***********GPIOA**************
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
// GPIOA->MODER =0x0; //Input (reset state)
GPIOA->OSPEEDR =0xFF; //100 MHz
//***********EXTI***************
SYSCFG->EXTICR[1] = 0x0; //перые 4 ноги для прерываний, порта А
EXTI->IMR |=(EXTI_IMR_MR0); //разрешаем прерывание для нулевой ноги EXTI_IMR_MR0=1
EXTI->RTSR |=(EXTI_RTSR_TR0); //прерывания по спаду
//************NVIC**************
// NVIC->ISER[0] |=(1<<6); //6 settable EXTI0 Line0 interrupt
// NVIC->IP[1] =0xF000; //установка приоритета 15 для 6-й Position
NVIC_EnableIRQ(EXTI0_IRQn);
NVIC_SetPriority(EXTI0_IRQn,1);
}
/* прерывание */
void EXTI0_IRQHandler (void) {
EXTI->PR = EXTI_PR_PR0; // Сбросить флаг
}