int main(){
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LED_Init();
USART1_Init(9600);
KEYBOARD_Init();
My_EXTI_Init();
while(1)
{
printf("5\r\n");
led1=0;
delay_ms(1000);
printf("4\r\n");
led1=1;
delay_ms(1000);
printf("3\r\n");
led1=0;
delay_ms(1000);
printf("2\r\n");
led1=1;
delay_ms(1000);
printf("1\r\n");
led1=0;
delay_ms(1000);
printf("Stop \r\n");
Enter_Stop_Mode();
printf("唤醒成功\r\n");
}
}
主函数在一系列初始化后开始5秒倒数,最后进入stop模式。
使用外部中断(下键)唤醒,唤醒后打印_“唤醒成功”_。
void EXTI3_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line3)==1)
{
delay_ms(10);
if(KEY_DOWN==0)
{
USART1_Init(9600);
printf("唤醒成功\r\n");
}
}
EXTI_ClearITPendingBit(EXTI_Line3);
}
退出stop模式后应该从进入stop模式的代码处继续,但串口调试助手的结果如图:
给我的感觉是按一下唤醒一下,这是怎么回事啊?