main()
{
Clk_conf();
uart_Init();
All_Power_Button_Init();
//SPI_Config();
//SPI_FLASH_Init();
_asm("rim");
USART1_SendStr("start ok\r\n",10);
//_asm("halt");
while (1)
{
{
static u32 i=0x20000;
if((u32)(i--))
{
if(i==0)
{
USART1_SendStr("next\r\n",6);
i=0x20000;
}
}
if(wake_sleep_pin==0)
{
delay_ms(2000);
if(wake_sleep_pin==0)
{
while(wake_sleep_pin==0);
delay_ms(2000);
  E_CR2 |= (0x40);
EXTI_CR2 |= (0x20);
CFG_GCR=0x00;
_asm("wfi");
{
pp1:
{
u8 wake_up_count=0;
while(wake_up_count<5)
{
delay_ms(1000);
wake_up_count++;
}
if(wake_sleep_pin==0)
{
wake_up_count=0;
USART1_SendStr("wake up\r\n",7);
  E_CR2 &= ~(0x40);
}
else
{
  E_CR2 |= (0x40);
EXTI_CR2 = (0x20);
CFG_GCR=0x00;
_asm("wfi");
goto pp1;
}
}
}
}
}
}
}
}
/**************************外部中断6******************************/
@far @interrupt void External_interrupt_6 (void)
{
EXTI_SR1=0xff;
EXTI_SR2=0xff;
  E_CR2 &= ~(0x40);
//if(wake_sleep_pin==0x00)
return;
}
问题:
1、每次复位,第一次可以进入休眠,进入休眠可以唤醒,但是第二次进入休眠,就唤醒不了了
2、第一次进入休眠,如果按键时间没到重新进入休眠,也唤醒不了了
|