void fn_standbyTest(void)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, ENABLE);
//RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, ENABLE);
//RCC_ClockSecuritySystemCmd(ENABLE);
//PWR_BackupAccessCmd(ENABLE);
defBz_On;fn_SoftDelay_1ms(40);defBz_Off;fn_SoftDelay_1ms(100);
defBz_On;fn_SoftDelay_1ms(40);defBz_Off;//be..be
/*
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
EXTI_ClearITPendingBit(EXTI_Line0);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //设置为中断请求,非事件请求
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//EXTI_Trigger_Rising; //设置中断触发方式为下 降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //外部中断使能
EXTI_Init(&EXTI_InitStructure);
EXTI_ClearITPendingBit(EXTI_Line0);
EXTI_ClearFlag(EXTI_Line0);
*/
PWR_WakeUpPinCmd(PWR_WakeUpPin_1,ENABLE);//PA0按键,按下时将VCC接入IO
PWR_EnterSTANDBYMode();
}
1、仿真模式下,查看PWR寄存器设置时无法置位。
2、因为PWR的PWR_CR_PDDS置位无变化,所以最终进入的是stop模式,因为我将PA0配置成中断口能唤醒
3、以上程序如果不将PA0置为中断,则无法唤醒(目前个人分析是以上代码让MCU进入了stop)
目前,不知道怎么样才能进standby模式,我需要用WKUP1即PA0唤醒。 |