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

查看: 19652|回复: 6

STM32F0xx_RTC实时时钟配置详细过程

[复制链接]

49

主题

19

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-16
发表于 2016-6-5 15:55:07 | 显示全部楼层 |阅读模式





、概述
   今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下。
    STM32RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。
    STM32F0RTC模块和F1RTC模块最大区别在于F0模块中有“DATE”和“TIME”寄存器,也就是可以直接读取寄存器里面的值,而F1是秒计数寄存器的值,需要通过相关算法下才能得到时间的值。
    本文提供的软件工程里面还包含一个BKP模块,主要是用于掉电保持RTC数值(第一次上电初始化RTC,后面就不用初始化)。例程是在第一次初始化RTC值为:201665日 周七 12:00:00(自己可修改)。之后每秒读取一次,并通过串口打印出来。这里可以设置秒中断,不用软件等待1秒才去读取。

Ⅱ、下载
    文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。
    ST标准外设库和参考手册、数据手册等都可以在社区文档专区下载,关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。

今天的软件工程下载地址:
http://yunpan.cn/cSabGUUmvGUiN  访问密码 8eee


STM32F0xx的资料可以在我360云盘下载:
http://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37

Ⅲ、准备工作
建议准备F0的参考手册和数据手册,方便查阅相关知识,没有的请到社区文档专区下载。
今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。我每次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作:打开工程 -> 新建文件(rtc.c rtc.h) -> 添加相关文件到工程中 -> 添加源代码。

Ⅳ、RTC原理
RTC实时时钟1.png
通过RTC时钟进来分频之后达到1秒(1Hz),没相应一次时间更新RTC时钟寄存器(RTC_TR、RTC_DR),我们读取的数字就会更改。如果配置了中断,相应事件的时候,中断也会响应。如果配置了闹钟,同样达到了闹钟设定的值也会响应闹钟。


Ⅴ、代码描述
①RCC时钟
RTC实时时钟2.png
该函数位于bsp.c文件下面;
RCC_APB1Periph_PWR时钟的电源管理的时钟,RTC属于后备管理区域。还有一个时钟就是RTC时钟,RTC时钟可以LSI和LSE,我定义了一个选择(请看源代码)。

我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于忘记配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。
注意:
外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);这样能编译过,但是错误的
我每次都提醒RCC时钟,是因为很多人就是因为时钟而导致软件运行有问题,所以,提醒更多人要注意配置RCC.


②RTC配置
RTC实时时钟3.png
该函数位于rtc.c文件下面;
注意:
这里需要定义使用哪一个时钟,我提供工程是使用内部LSI,如果你有LSE外部时钟,也可以定义使用外部时钟。


③RTC初始化配置
RTC实时时钟4.png
该函数位于rtc.c文件下面;
由于RTC属于后备区域,为了方便,这里同时也使用BKP的功能,就是防止软件每次复位都初始化时钟,这里写入后备区域BKP一个标志位,第一次才初始化,后面(只要VBAT, 后备区域有点)都不需要重新初始化了。


④设置RTC时钟接口函数
RTC实时时钟5.png
该函数位于rtc.c文件下面;
这个函数是我自己封装的,主要是把日期Date 和 时间Time封装在一起了,方便一次性操作。


⑤读RTC时钟接口函数
RTC实时时钟6.png
该函数位于rtc.c文件下面;
这个函数也是把日期Date 和 时间Time封装在一起了,方便一次性操作。这种关于结构体的知识建议不会的人尝试着使用一下结构体,应用结构在C语言中是比较重要的一块。


Ⅵ、说明
或许你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片,甚至是F2、F4等芯片上(具体请看手册、或者亲自测试)。
本文章提供的软件工程是基于ST标准外设库为基础建立而成,而非使用STM32CubeMX建立工程。个人觉得使用ST的标准外设库适合与学习者,STM32CubeMX建立工程结构复杂,对于学习者,特别是初学者估计会头疼。
今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。
<
回复

使用道具 举报

0

主题

9

回帖

0

蝴蝶豆

初级会员

最后登录
2016-12-22
发表于 2016-10-28 00:34:14 | 显示全部楼层
你好楼主,感谢你的分享。你分享的工程连接过期了,能否重新分享下了
回复 支持 反对

使用道具 举报

49

主题

19

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-16
 楼主| 发表于 2016-11-14 14:25:06 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复 支持 反对

使用道具 举报

1

主题

3

回帖

0

蝴蝶豆

初级会员

最后登录
2018-9-7
发表于 2017-6-19 15:14:46 | 显示全部楼层
楼主你的分享过期了  能否再上传一次分享呢
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-12
发表于 2017-6-22 14:48:09 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

初级会员

最后登录
2020-11-25
发表于 2018-1-18 21:57:05 | 显示全部楼层
楼主,你的云盘链接过期了,能否发一份STM32F030系列的RTC唤醒STOP模式的例程QQQ1964439971
回复 支持 反对

使用道具 举报

0

主题

14

回帖

0

蝴蝶豆

新手上路

最后登录
2020-1-15
发表于 2020-1-15 16:39:30 | 显示全部楼层
过期了!能重新发一下吗
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版