找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6435|回复: 2
打印 上一主题 下一主题
收起左侧

一个关于STM32FL15X芯片RTC应用中的定时唤醒话题

[复制链接]
跳转到指定楼层
楼主
ID:98618 发表于 2015-12-7 00:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                                              

                                 整理:MilerShao

        某天某工程师说,在用STM32F151开发产品工程中遇到一奇怪现象。

他启用了RTC中的唤醒定时器,定期唤醒休眠的MCU. 发现在休眠中途(未到醒来时)外部复位脚一个复位信号,STM32L151程序并再次配置唤醒定时器后入眠,但之后休眠唤醒的时间依然会紧跟着上一次设置和计时时间

例如:假设MCU上电后的定时唤醒间隔设置为30分钟进入休眠到了20分钟,给MCU复位脚一个复位信号,强令其
来重新跑程序,
而且程序里执行了30分钟唤醒配置后才入眠可结果只跑了10分钟后,MCU被唤醒了虽然中途MCU被复位
过一次,再休眠后,唤醒时间还是紧接着上次来的,
按理说复位过一次又重新设置了,后面应该是30分钟后才醒,怎么10分钟就醒呢?

 
 


从现象描述来看,唤醒定时器启动后,虽然经历中途的系统复位,其计时唤醒参数以及计数器并未受到影响。尽管系
统复位、低功耗模式【
SLEEP/STOP/STANDBY】不会影响唤醒计数器的工作,但中途复位后,该工程师陈述有做重新配置
相关时间参数的动作,按理说,中途配置后的唤醒时间应该是30分钟而不是10分钟。难道他在中途复位后运行的相关配
置参数没有生效?

查看手册,配置唤醒定时器按如下几步操作:


查看其wake up timer相关配置代码,代码里并没有发现上面3步中的1。配置唤醒定时器必须保证RTC_CR寄存器
中的
WUTE0才可以进行。他虽然没写这句代码,幸运的是MCU每次
上电复位后,该位默认值就是0,所以上电复位后配
置唤醒定时器即使不写一句令
WUTE0的代码,配置依然畅通有效。

但如果你上电配置过后,即使系统复位重新运行程序再来配置唤醒定时器,就没那么好运了。因为此时的WUTE位在
上电复位后的第一次配置的过程中已经置
1了,而且 RTC寄存器的内容又不受
系统复位【哪些是属于系统复位,详看手册
 
影响。所以,后面要想修改调整配置参数,就得手动先让WUTE清零,否则,出现上面反映的情况就不难理解了。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:390842 发表于 2018-8-28 16:11 | 只看该作者
您好,我想请教一下这个唤醒时间怎么设置?我现在只能设置成30s左右
回复

使用道具 举报

板凳
ID:390850 发表于 2018-8-28 16:27 | 只看该作者
不错哟,下载过来学习一下
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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