我用的是2个按键PA0和PC13,先把这两个挂在各自的中断线上,然后通过PA0进入停机模式,按理说按下PC13就会唤醒,但是实际操作中不管怎么按都没有反应,不知道是函数的问题还是硬件的问题。。
2个中断都可以进入中断函数里面,现在的问题就是不能唤醒。。
下面带上停机模式的函数:
void Sys_Enter_Standby(void)
{
while(WK_UP==0); //等待WK_UP按键松开(在有RTC中断时,必须等WK_UP松开再进入待机)
printf("停机");
delay_ms(50);
RCC_AHB1PeriphResetCmd(0X04FF,ENABLE);//复位所有IO口
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能PWR时钟
// PWR_BackupAccessCmd(ENABLE);//后备区域访问使能
RTC_ITConfig(RTC_IT_TS|RTC_IT_WUT|RTC_IT_ALRB|RTC_IT_ALRA,DISABLE);//关闭RTC相关中断,可能在RTC实验打开了。
RTC_ClearITPendingBit(RTC_IT_TS|RTC_IT_WUT|RTC_IT_ALRB|RTC_IT_ALRA);//清楚RTC相关中断标志位。
EXTI_ClearITPendingBit(EXTI_Line0);
EXTI_ClearITPendingBit(EXTI_Line13);
EXTI_ClearITPendingBit(EXTI_Line2);
// PWR_ClearFlag(PWR_FLAG_WU);//清除Wake-up 标志
//
// PWR_WakeUpPinCmd(ENABLE);//设置WKUP用于唤醒
// PWR_EnterSTANDBYMode(); //进入待机模式
PWR_EnterSTOPMode(PWR_Regulator_ON,PWR_STOPEntry_WFI);
SystemInit();
}
此帖出自
小平头技术问答
一周热门 更多>