中级会员
 
- 积分
- 353
- 金钱
- 353
- 注册时间
- 2019-4-22
- 在线时间
- 83 小时
|
1金钱
按照标题的接法:按键一端接地 一端接PA0,那是否初始化上拉输入,然后下降沿做待机唤醒???
实际按照该方法修改原子例程,发现可以进入待机模式,但是不能用按键唤醒,请教各位哪里出问题了?
u8 Check_WKUP(void)
{
while(1)
{
if(WKUP_KD==0) return 0; //按下
else return 1;
}
}
void Sys_Standby(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_WakeUpPinCmd(ENABLE);
PWR_EnterSTANDBYMode();
}
void Sys_Enter_Standby(void)
{
RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //复位所有IO口
Sys_Standby();
}
void EXTI0_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line0); // 清除LINE10上的中断标志位
if(Check_WKUP()==0)
{
Sys_Enter_Standby();
}
}
void WKUP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStru;
EXTI_InitTypeDef EXTI_InitStru;
NVIC_InitTypeDef NVIC_InitStru;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStru.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStru.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStru.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStru);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
EXTI_InitStru.EXTI_Line=EXTI_Line0;
EXTI_InitStru.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStru.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStru.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStru);
NVIC_InitStru.NVIC_IRQChannel=EXTI0_IRQn;
NVIC_InitStru.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStru.NVIC_IRQChannelSubPriority=2;
NVIC_InitStru.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStru);
if(Check_WKUP()) Sys_Standby();
}
|
|