[STM32F1] 如何区分唤醒源是RTC还是WKUP pin

[复制链接]
775|13
 楼主| chenjunt 发表于 2020-9-3 20:53 | 显示全部楼层 |阅读模式
STM32进入待机被唤醒后,如何区分唤醒源是RTC还是WKUP pin
stly 发表于 2020-9-3 20:59 | 显示全部楼层

什么意思?不是很明白你说的什么,能再解释一下这个现象吗
 楼主| chenjunt 发表于 2020-9-3 21:03 | 显示全部楼层
WKUP pin(PA0)连接了一个加速度传感器高电平触发。 另外RTC也定时设定了10min 唤醒后上传一次数据。如果无法区分,那么每一次被加速度唤醒后就会RTC就会重新开始计数。我希望不管有没有被加速度唤醒我的RTC计时始终都是每10分钟唤醒。
dingy 发表于 2020-9-3 21:09 | 显示全部楼层
手册中咋写
 楼主| chenjunt 发表于 2020-9-3 21:12 | 显示全部楼层
手册中PWR_CSR 寄存器的WUF位只能判断系统是否是被唤醒的。但并无法区分这两种唤醒模式
hanwe 发表于 2020-9-3 21:15 | 显示全部楼层
wangzsa 发表于 2020-9-3 21:19 | 显示全部楼层
RTC唤醒后,RTC的寄存器中应该会有指示吧?
zhuhuis 发表于 2020-9-3 21:22 | 显示全部楼层
对于没有指示的,也可以判断当前时间和期望值是否匹配。
chuxh 发表于 2020-9-3 21:27 | 显示全部楼层
RTC唤醒的话,RTC的标志位 RTC_ISR_WUTF 会被置1的,可以通过这个判断是不是RTC,不是RTC就是其它了
 楼主| chenjunt 发表于 2020-9-3 21:31 | 显示全部楼层
感谢回复。用下面代码实测OK。HAL 库
        if(__HAL_RTC_WAKEUPTIMER_GET_FLAG(&hrtc, RTC_FLAG_WUTF) != RESET)
        {
                RTC_wakeup_flag = 1;
                printf("RTC wakeup.\n");
        }
liuzaiy 发表于 2020-9-3 21:35 | 显示全部楼层
楼主的问题怎么解决的,我现象也碰到了这个问题。RTC和WKUP同时用,会死机。。。
 楼主| chenjunt 发表于 2020-9-3 21:39 | 显示全部楼层
你好,解决了了吗,我也不能同时使用rtc和wkup
kangzj 发表于 2020-9-3 21:42 | 显示全部楼层
en 还是不知道怎么区分。网上资料好少啊
 楼主| chenjunt 发表于 2020-9-3 21:50 | 显示全部楼层
我上面的回复已经给出了怎么识别RTC唤醒了啊。那么剩下的就是IO唤醒或者开机启动了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

7868

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部