IAR 6.50.3
Создал проект.
Подключил CMSIS
Добавил файл с векторами прерываний startup_stm32l1xx_md.s и system_stm32l1xx.c
Да и всё поподключал что было в папке CMSIS.
Прерывание срабатывает, но не переходит в функцию.
Инициализация:
Код: Выделить всё
// настройка линии на вход
GPIOA->MODER &= ~GPIO_MODER_MODER0; // вход
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_0; // Output push-pull
GPIOA->OSPEEDR |=GPIO_OSPEEDER_OSPEEDR0; // частота 40 MHz
GPIOA->PUPDR &=~GPIO_PUPDR_PUPDR0; // подтягивающие резисторы отключены
// настройка внешнего прерывания на int0
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
// подключение к линии EXTI 0
SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA;
EXTI->IMR |= EXTI_IMR_MR0;
EXTI->RTSR |= EXTI_RTSR_TR0; // срабатывание по снижению
NVIC_SetPriority(EXTI0_IRQn, 1); // приоритет прерывания
NVIC_EnableIRQ(EXTI0_IRQn); // разрешение прерывания EXTI0
Код: Выделить всё
void EXTI0_IRQHandler (void) {
// фонарик
Flashlight_POWER_H; // питание фонарика
Flashlight_H; // яркость фонарика
EXTI->PR |= EXTI_PR_PR0; // сбросить флаг прерывания
}

Не могу понять в чём проблема.
Может кто знает что это или как найти проблему ?


