你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F1xx通过stm32cubeMX配置RTC心得

[复制链接]
囧囧 发布时间:2016-11-22 17:23
F1xx的RTC只是一个简单的32位计数器,其他系列的则是比较正统的RTC了;
7 O. ^5 j& X! E3 n( S) J在使用STM32CubeMX配置RTC过程中遇到几个问题。9 k' m4 u* P8 c$ q- a
1、自动配置后,每次上电都会重新初始化时间,所以这里需要自己修改一下初始化配置函数,使用BKP_REG_DR*设置标志位;  N; N* w+ e0 {# J
2、使用自动配置,初始化时间必须使用RTC_FORMAT_BCD,原因是库函数存在bug,如果使用RTC_FORMAT_BIN,月份配置会出错,比如说11月,配置时会赋值为RTC_MONTH_NOVEMBER,而此宏定义值为0x11,也就是说其十进制值为17,使用HAL_RTC_SetDate时,如果使用RTC_FORMAT_BIN模式会直接赋值而没有转换,导致出现月份配置错误。
1 u- }/ Y+ Q9 u' f3、使用F1的RTC,只能实时记录time,而不能实时记录date,date是在获取时间时(HAL_RTC_GetTime)通过函数RTC_DateUpdate自动更新在ram中的,掉电之后date就没了,所以需要间隔性的去记录当前的date。下次上电时根据BKP_REG的值,决定是否读取记录的date值,赋值给hrtc结构体DateToUpdate成员,这样日期也就不会丢失了。: a7 ~' o; ~& C- V4 K; ]
7 Y: y7 j/ f& }, ~# V6 Q

评分

参与人数 1 ST金币 +5 收起 理由
zero99 + 5

查看全部评分

赞 1 收藏 3 评论15 发布时间:2016-11-22 17:23

举报

15个回答
zero99 回答时间:2016-11-28 14:08:17
学习了
andypanfan 回答时间:2016-11-29 08:55:36
谢谢!!!非常好!!!!
5265325 回答时间:2016-11-29 09:23:05
五哥1 回答时间:2016-11-29 16:18:32
这个终于找到原因了
xhzheng 回答时间:2016-11-29 17:05:02
感谢分享
5265325 回答时间:2016-11-30 09:20:32
我不怕 回答时间:2017-2-25 07:54:38
楼主,我也是用cubeMX遇到了这个坑,105的板子,掉电后时间正常,年月日恢复为系统默认配置!像你说的方法,定时保存年月日信息,但是停电超过一天就GG了,有没有什么解决方法?
奏奏奏 回答时间:2017-2-25 08:52:45
我不怕2106 发表于 2017-2-25 07:54; ?* W) J9 n8 x2 y* \
楼主,我也是用cubeMX遇到了这个坑,105的板子,掉电后时间正常,年月日恢复为系统默认配置!像你说的方法 ...
, t; V* q5 U2 w, h0 o8 ~2 X. i& }
如果不增加硬件成本添加RTC芯片的话,只能按照楼主说的第3点那个方法,自己在备份寄存器中存过了多少秒,然后换算成过了几天,依此类推,再自己规定一个开始的日期就可以换算了。3 |3 `7 X4 @. Z5 N; z
比如说我规定开始日期是2017年2月25日上午8点整,每过一秒往备份寄存器中加一,如果累计读取备份寄存器出来过了 86400秒,那么现在的时间不就是2017年2月26日上午8点整了吗
我不怕 回答时间:2017-3-6 10:42:00
奏奏奏 发表于 2017-2-25 08:52
5 r4 {6 e0 q0 p7 z# v如果不增加硬件成本添加RTC芯片的话,只能按照楼主说的第3点那个方法,自己在备份寄存器中存过了多少秒, ...
) I/ b: I& m# L7 P; k
谢谢!我后来换了一种方法,直接采用原子例程中的设置和获取时间函数,不采用cubeMX生成的相关时间函数,其余不做变化!
weson 回答时间:2017-5-17 16:52:34
我不怕2106 发表于 2017-3-6 10:42) W! _" `" U+ I( q. ]
谢谢!我后来换了一种方法,直接采用原子例程中的设置和获取时间函数,不采用cubeMX生成的相关时间函数, ...
; L! {/ ]& V; d/ m$ \6 U
你好!更换CUBE库遇到同样问题,要怎么处理呢?
zbber 回答时间:2017-5-17 21:18:23
' Q7 D! v4 l. Y
,楼主厉害,支持楼主) `9 Z& ~6 {- f% x3 p0 d. H
epochal 回答时间:2017-5-18 07:31:15
经验分享,值得点赞!
lewuyouc 回答时间:2017-9-30 17:25:36
楼主的第三观点在超过一天时,该方法不好用呀,官方有没有什么好的解决方法?现在断电后重启后,时间能正确运行,但是日期恢复到默认值,有没有什么好的办法能正确运行日期和时间?
epochal 回答时间:2017-9-30 20:28:27
学习了!
12下一页

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版