проблема с внешними прерываниями

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
stmmts
Родился
Сообщения: 2
Зарегистрирован: Сб окт 29, 2022 22:06:55

проблема с внешними прерываниями

Сообщение stmmts »

Если в программе одно внешнее прерывание 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); 
       }
}

Реклама
stmmts
Родился
Сообщения: 2
Зарегистрирован: Сб окт 29, 2022 22:06:55

Re: проблема с внешними прерываниями

Сообщение stmmts »

ошибку допустил, пропустил _1_ в названии функции void EXTI0_1_IRQHandler(void)
Вопрос закрыт.
Реклама
Ответить

Вернуться в «ARM»