STM32中断异常
在使用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);
}
}
外部捕捉中断就这个鸟样,我测试的时候也是这样。。。用其他变量可以避开,比如读取IO口电平,或者其他方式等等!!! MrJiu 发表于 2018-7-3 13:35
外部捕捉中断就这个鸟样,我测试的时候也是这样。。。用其他变量可以避开,比如读取IO口电平,或者其他方式 ...
这样,感谢 在关闭中断前,确保读完了数据?你可以多读几次试试看看
页:
[1]