|
本帖最后由 codepencil 于 2018-2-12 15:50 编辑 关于STMF103CBU6芯片RTC Alarm唤醒standby后获取不到RTC Alarm标志位问题。 在设置了RTC Alarm唤醒standby mode后,给单片机烧录完程序,如果不断电可以通过 RTC_GetFlagStatus(RTC_FLAG_ALR)获取到RTC Alarm唤醒的flag,但是断电重启后就没法获取到了。 不断电直接RESET复位也是能获取到的; 不知道是什么原因?
Test Code .zip
(8.08 MB, 下载次数: 17)
|
微信公众号
手机版
直接烧录完RTC Alarm唤醒standby的时候,RTC_GetFlagStatus(RTC_FLAG_ALR) ==SET,同样的程序,断电再重新上电后虽然仍然是 RTC Alarm唤醒standby,但是RTC_GetFlagStatus(RTC_FLAG_ALR) ==RESET;
只要不断电用RESET复位也是正常能获取到FLAG。
检查一下后备电池是否正常
评分
查看全部评分
http://blog.sina.com.cn/s/blog_6c911b3f0100lykc.html
楼主,你的原理图是什么样的?也许跟硬件有关系。首先VBAT应该接了电池,是没问题的吧?
STM32F103xB数据手册和AN2586应用手册。
评分
查看全部评分
复位过程除了RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器外,所有的系统寄存器都由系统复位或电源复位进行异步复位。 RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器仅能通过备份域复位信号复位,详见第6.1.3节。
评分
查看全部评分
没有用单独的后备电池,全部用的是VDD,VBAT口接的也是VDD;
全部用的是VDD,VBAT口接的也是VDD;
VBAT没接电池,断电后,状态不会保存的。
一、为了降低功耗用了standby;
二、手册上有如下说:
A backup domain reset is generated when one of the following events occurs:
backup区域复位有两种方式
1. Software reset, triggered by setting the BDRST bit in the Backup domain control
register (RCC_BDCR).
软件复位,配置backup区域的BDRST;
2. VDD or VBAT power on, if both supplies have previously been powered off.
VDD、VBAT全部掉电
但是程序在重新上电后也有重新配置一遍,应该和不断电效果一样才对,但是重新上电后读取不到ALRF;
但是重新上电后会完全重新配置一遍,这时候不再断电,结果却读取不到ALRF了啊。