在使用STM32L151调试射频芯片的时候,在中断时,调用中断函数处理函数,并关闭中断,处理完成后,再开启中断,但是在开中断时发现,再次使能中断后,会立刻进入中断处理函数,但是并没有外部信号触发中断。怀疑是中断标志位被挂起,但是调用HAL_NVIC_ClearPendingIRQ函数也不行,不知道有没有大神求解。 不会传图片,代码如下 中断初始化 static void EXTI3_Init(void) { GPIO_InitTypeDef gpioinitstruct; /* Enable the Motor Clock */ __HAL_RCC_GPIOB_CLK_ENABLE(); /* Configure the GPIO */ gpioinitstruct.Pin = GPIO_PIN_3; gpioinitstruct.Pull = GPIO_PULLUP; gpioinitstruct.Speed = GPIO_SPEED_FREQ_MEDIUM; /* Configure Button pin as input with External interrupt */ gpioinitstruct.Mode = GPIO_MODE_IT_FALLING; HAL_GPIO_Init(GPIOB, &gpioinitstruct); /* Enable and set Button EXTI Interrupt to the lowest priority */ HAL_NVIC_SetPriority(EXTI3_IRQn, 0x02, 1); HAL_NVIC_EnableIRQ(EXTI3_IRQn); } 中断处理函数,Event_Flag 置1 void EXTI3_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3); HAL_NVIC_ClearPendingIRQ(EXTI3_IRQn); if(IRQ3_Flag) { IRQ3_Flag = 0; return; } Event_Flag = 1; } 开关中断,但是在重开中断后,会立马进入中断,但是并没有外部信号触发中断 while (1) { if(Event_Flag) { HAL_NVIC_DisableIRQ(EXTI3_IRQn); Event_Flag = 0; IRQ3_Flag = 1; HAL_NVIC_EnableIRQ(EXTI3_IRQn); } } |
评分
查看全部评分
这样,感谢
评分
查看全部评分