近日在STM32停机模式下使用按键中断唤醒,多次重复按按键,会出现死机,经多次测试后,发现死机前可进入中断,中断后不能正确返回原来的位置,疑中断中出现其它未知指令,后实验发现在按键中先关闭按键中断,再清中断标志位就不会出现死机现象。
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line11) != RESET)
{
EXTI->IMR &= ~(1<<11); //禁能PA11中断,要放在清中断标志指令的前面,防止退出休眠时死机
EXTI_ClearITPendingBit(EXTI_Line11); //清中断标志
}
else if(EXTI_GetITStatus(EXTI_Line12) != RESET)
{
EXTI->IMR &= ~(1<<12); //禁能PC12中断
EXTI_ClearITPendingBit(EXTI_Line12); //清中断标志
}
}