}
void EXTI0_IRQHandler(void)
{
static u8 wkupflag=0;
EXTI->

R=1<<0; //清除LINE10上的中断标志位
if((Check_WKUP())&&(wkupflag==0))//关机?
{
wkupflag=1;
}
else if((Check_WKUP())&&(wkupflag==1))
{
wkupflag=0;
}
if(wkupflag==1)
{
VCC_FCON=1;
EN_POWER=1;
Sys_Enter_Standby();
// LCD_PutString(100,100,32,32,133,"成功",Red,White);
}
else if(wkupflag==0)
{
// LCD_PutString(100,100,32,32,133,"失败",Red,White);
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
PC_usart1_init(72,2400); //串口1初始化
RS485_usart2_Init(36,9600); //初始化RS485
IR_uart3_init(36,2400); //串口初始化为2400
POWERCONTROL_Init(); //初始化与LED连接的硬件接口
LCD_Init();
KEY_Init();
Adc_Init();
OUT38KHz_Init();
TIM3_38KHz_Init(13,71); //10Khz的计数频率,计数5K次为500ms
SPI_Flash_Init(); //SPI FLASH 初始化
RTC_Init();
WKUP_Init();
POWER_OPEN();
Display_Init_Picture();
DispMenu0(menu0_cursor);
}
}
//PA0 WKUP唤醒初始化
void WKUP_Init(void)
{
RCC->APB2ENR|=1<<2; //先使能外设IO PORTA时钟
RCC->APB2ENR|=1<<0; //开启辅助时钟
GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
GPIOA->CRL|=0X00000008;
Ex_NVIC_Config(GPIO_A,0,RTIR);//PA0上升沿触发
//(检查是否是正常开)机
// if(Check_WKUP()==0)Sys_Standby(); //不是开机,进入待机模式
MY_NVIC_Init(0,0,EXTI0_IRQChannel,2);//抢占2,子优先级2,组2
}
以前没接触过低功耗,可能写代码会犯低级错误,请大家指点,应该用什么别的好点方法实现,谢谢