Если в программе одно внешнее прерывание NVIC_EnableIRQ(EXTI4_15_IRQn) то его ISR (void EXTI4_15_IRQHandler(void))срабатывает. Но когда в программе есть 2 внешних прерываний, как показано ниже, то ISR(void EXTI4_15_IRQHandler(void)) не срабатывает. Что делаю не так?
Чип stm32f030R8
Код:
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
SYSCFG->EXTICR[4] &= (uint16_t)~SYSCFG_EXTICR4_EXTI15_PA;
EXTI->IMR = EXTI_IMR_MR15;
EXTI->RTSR = EXTI_RTSR_TR15;
NVIC_EnableIRQ(EXTI4_15_IRQn);
NVIC_SetPriority(EXTI4_15_IRQn,0);
SYSCFG->EXTICR[1] &= (uint16_t)~SYSCFG_EXTICR1_EXTI0_PA;
EXTI->IMR = EXTI_IMR_MR0;
EXTI->RTSR = EXTI_RTSR_TR0;
NVIC_EnableIRQ(EXTI0_1_IRQn);
NVIC_SetPriority(EXTI0_1_IRQn,1);
void EXTI4_15_IRQHandler(void)
{
if ((EXTI->PR & EXTI_PR_PR15) != 0)
{
EXTI->PR |= EXTI_PR_PR15;
GPIOC->ODR ^= (1<<9);
}
}
void EXTI0_IRQHandler(void)
{
if ((EXTI->PR & EXTI_PR_PR0) != 0)
{
EXTI->PR |= EXTI_PR_PR0;
GPIOC->ODR ^= (1<<8);
}
}