最近用到stm8l051 halt,在halt之后开启了外部中断,有时灵,有时不灵,设置下降沿触发,但是按键(低有效)放开了才会从HALT退出,最后发现在进去外部中断的时候一直在外部中断里面不退出。
在外部中断程序里面把端口的外部中断和端口使能的外部中断功能关闭,问题解决,可以在下降沿从halt退出。
1、开启halt,其他代码省略,只贴halt部分:
/* 禁止TIM3 */
TIM3->SR1 = (uint8_t)(~(uint8_t)TIM3_IT_Update);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE);
TIM3_ITConfig(TIM3_IT_Update, DISABLE);
TIM3_Cmd(DISABLE);
if(Halt.wakeupFlag == 0)
{
POWER433MOFF;
halt();
}
Halt.wakeupFlag = 0;
Si4432PortReset();
MCUTXLEDOFF;
POWER433MON;
//唤醒
EXTI->SR1 = 0Xff;
EXTI->SR2 = 0Xff;
GPIOA->CR2 = 0x00;
GPIOB->CR2 = 0x00;
GPIOD->CR2 = 0x00;