OpenEdv-开源电子网

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

STM32F1待机模式PA0无法唤醒

[复制链接]

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-9-9
在线时间
8 小时
发表于 2022-9-21 17:07:33 | 显示全部楼层 |阅读模式
#include "wkup.h"

static u8 t = 0 ;

void STANBY(void) {
   
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
//    PWR->CSR|=1<<8;          //设置WKUP用于唤醒
    PWR_WakeUpPinCmd(ENABLE);        //使能WKUP唤醒引脚
    PWR_EnterSTANDBYMode();        //进入待机模式
}

void EN_STANBY(void){
   
    RCC_APB2PeriphResetCmd(0X01FC,DISABLE);    //复位所有IO口
   
    STANBY();
}

void WKUP_Init(void) {
   
    GPIO_InitTypeDef    GPIO_InitStructure;
    EXTI_InitTypeDef    EXTI_InitStructure;
    NVIC_InitTypeDef    NVIC_InitStructure;
   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);   
   
    //POWER_KEY
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);        //配置外部中断与GPIOA连接
   
    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;        //中断模式
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;        //下降沿触发
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
   
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
   
    //if(POWER_CHECK() == 0) STANBY();
}

void EXTI0_IRQHandler(void){
        
    EXTI_ClearITPendingBit(EXTI_Line0);        //清除外部中断线0上的中断标志位
   
    if(POWER_CHECK()) {
            
        EN_STANBY();
    }
}



u8 POWER_CHECK(void) {
   
    while(1) {
        
        if(power_check) {
            
            return 0;
        }
        else {
            
//            t++;

//            delay_ms(30);
//            
//            if(t >= 100) {
//               
//                t = 0;
                return 1;
            //}               
        }
    }
}




根据原子的demo,结合实际情况,外部PA0是接了外部上拉的,所以这里PA0外部中断设置为下降沿触发,但是这个状态待机之后,唤醒不了,还是说待机唤醒触发,只能是PA0的上升沿?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-9-22 16:47:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-9-9
在线时间
8 小时
 楼主| 发表于 2022-9-22 17:20:16 | 显示全部楼层
babyrabbit 发表于 2022-9-22 16:47
多看视频 多看教程

因为实际外部PA0是接了上拉电阻,所以这里配置成下降沿,也试过两个都有效,但是都不行,问过别人,说待机状态,下降沿也可以唤醒
回复 支持 反对

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
773
金钱
773
注册时间
2021-4-15
在线时间
304 小时
发表于 2022-9-23 09:15:41 | 显示全部楼层
Corgih 发表于 2022-9-22 17:20
因为实际外部PA0是接了上拉电阻,所以这里配置成下降沿,也试过两个都有效,但是都不行,问过别人,说待 ...

你按键弹起的时候不得有上升沿么
日常敲键--头秃一片
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-9-9
在线时间
8 小时
 楼主| 发表于 2022-9-23 09:40:45 | 显示全部楼层
日渐秃兀 发表于 2022-9-23 09:15
你按键弹起的时候不得有上升沿么

设置过了,唤不醒
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-9-9
在线时间
8 小时
 楼主| 发表于 2022-9-23 09:41:28 | 显示全部楼层
Corgih 发表于 2022-9-23 09:40
设置过了,唤不醒

就是按照手册以及demo的模板,全部设置过,按键怎么都叫不起来
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 03:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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