OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2085|回复: 3

按键一端接地 一端接PA0做待机唤醒

[复制链接]

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
发表于 2019-11-25 09:41:48 | 显示全部楼层 |阅读模式
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();
}

最佳答案

查看完整内容[请看2#楼]

103只支持上升沿唤醒,所以你的想法无法实现。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-11-25 09:41:49 | 显示全部楼层
103只支持上升沿唤醒,所以你的想法无法实现。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
 楼主| 发表于 2019-11-25 20:12:40 | 显示全部楼层
帮顶一下
回复

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
 楼主| 发表于 2019-11-26 13:20:56 | 显示全部楼层
正点原子 发表于 2019-11-26 00:33
103只支持上升沿唤醒,所以你的想法无法实现。

好的  谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 06:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表