0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F0xx_ RTC实时时钟配置详细过程

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-07 11:50 次阅读

Ⅰ、概述

今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下。

STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。

STM32F0的RTC模块和F1的RTC模块最大区别在于F0模块中有“DATE”和“TIME”寄存器,也就是可以直接读取寄存器里面的值,而F1是秒计数寄存器的值,需要通过相关算法下才能得到时间的值。

本文提供的软件工程里面还包含一个BKP模块,主要是用于掉电保持RTC数值(第一次上电初始化RTC,后面就不用初始化)。例程是在第一次初始化RTC值为:2016年6月5日 周七 1200(自己可修改)。之后每秒读取一次,并通过串口打印出来。这里可以设置秒中断,不用软件等待1秒才去读取。

Ⅱ、下载

文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。

ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSabGUUmvGUiN访问密码 8eee

STM32F0xx的资料可以在我360云盘下载:

https://yunpan.cn/cS2PVuHn6X2Bj访问密码 8c37

Ⅲ、准备工作

建议准备F0的参考手册和数据手册,方便查阅相关知识,没有的请到ST官网或到我360云盘下载。

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

Ⅳ、RTC原理


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

Ⅴ、代码描述

①RCC时钟


该函数位于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.c文件下面;

注意:

这里需要定义使用哪一个时钟,我提供工程是使用内部LSI,如果你有LSE外部时钟,也可以定义使用外部时钟。

③RTC初始化配置


该函数位于rtc.c文件下面;

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

④设置RTC时钟接口函数


该函数位于rtc.c文件下面;

这个函数是我自己封装的,主要是把日期Date 和 时间Time封装在一起了,方便一次性操作。

⑤读RTC时钟接口函数


该函数位于rtc.c文件下面;

这个函数也是把日期Date 和 时间Time封装在一起了,方便一次性操作。这种关于结构体的知识建议不会的人尝试着使用一下结构体,应用结构在C语言中是比较重要的一块。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ST
    ST
    +关注

    关注

    32

    文章

    1093

    浏览量

    128125
  • RTC
    RTC
    +关注

    关注

    2

    文章

    482

    浏览量

    65431
  • STM32F0
    +关注

    关注

    0

    文章

    61

    浏览量

    16985
收藏 人收藏

    评论

    相关推荐

    电子时钟制作(瑞萨RA)(6)----配置RTC时钟及显示时间

    本文将详细讲解如何借助e2studio来对瑞萨微控制器进行实时时钟RTC)的设置和配置,以便实现日历功能和一秒钟产生的中断,从而通过串口输出实时
    的头像 发表于 12-01 14:09 293次阅读
    电子<b class='flag-5'>时钟</b>制作(瑞萨RA)(6)----<b class='flag-5'>配置</b><b class='flag-5'>RTC</b><b class='flag-5'>时钟</b>及显示时间

    CW32实时时钟RTC)介绍

    CW32实时时钟RTC)介绍
    的头像 发表于 10-24 15:36 498次阅读
    CW32<b class='flag-5'>实时时钟</b>(<b class='flag-5'>RTC</b>)介绍

    STM32F2实时时钟RTC

    RTC系统框图和组件 时钟源和分频器 硬件日历和警报 自动唤醒定时器 特色功能 数字粗略校准 参考时钟 外部引脚上的导出和导入功能 输出:警报、定时信号、校准时钟 输
    发表于 09-13 07:07

    STM32 RTC实时时钟(二)

    上次实验完成了对实时时钟的基本功能——计时的实验,这次在计时的基础上对RTC的可编程闹钟的功能进行测试。
    的头像 发表于 07-22 15:43 1112次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>RTC</b><b class='flag-5'>实时时钟</b>(二)

    STM32 RTC实时时钟(一)

    STM32处理器内部集成了实时时钟控制器(RTC),因此在实现实时时钟功能时,无须外扩时钟芯片即可构建
    的头像 发表于 07-22 15:41 2799次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>RTC</b><b class='flag-5'>实时时钟</b>(一)

    DA1468x SoC 的实时时钟(RTC) 概念

    DA1468x SoC 的实时时钟 (RTC) 概念
    发表于 07-06 19:27 0次下载
    DA1468x SoC 的<b class='flag-5'>实时时钟</b>(<b class='flag-5'>RTC</b>) 概念

    一文看懂RTC实时时钟

    RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 R
    的头像 发表于 06-16 12:24 2792次阅读
    一文看懂<b class='flag-5'>RTC</b><b class='flag-5'>实时时钟</b>

    深入浅出了解Linux RTC实时时钟

    实时时钟是个常用的外设,可以用来获取年、月、日和时间等信息。目前大多数的芯片内部都自带了实时时钟外设模块。例如本实验所使用的I.MX6ULL芯片内部SNVS就提供了RTC实时计数器)
    的头像 发表于 05-26 15:06 724次阅读
    深入浅出了解Linux <b class='flag-5'>RTC</b><b class='flag-5'>实时时钟</b>

    RTC时钟与触摸功能详解(下)

    是CPU内部集成RTC模块。STM32F103内部集成了RTC模块,可以通过配置相应的寄存器来实现实时时钟的功能。
    的头像 发表于 05-26 14:45 902次阅读
    <b class='flag-5'>RTC</b><b class='flag-5'>时钟</b>与触摸功能详解(下)

    RTC时钟与触摸功能详解(上)

    是CPU内部集成RTC模块。STM32F103内部集成了RTC模块,可以通过配置相应的寄存器来实现实时时钟的功能。
    的头像 发表于 05-26 14:44 1335次阅读
    <b class='flag-5'>RTC</b><b class='flag-5'>时钟</b>与触摸功能详解(上)

    STM32实时时钟RTC编程详解

    STM32里,一个CPU已经足够,不需要像DS1302这样的实时时钟芯片。实际上,RTC就只一个定时器而已,掉电之后所有信息都会丢失,因此我们需要找一个地方来存储这些信息,于是就找到了备份寄存器。因为它掉电后仍然可以通过纽扣电
    的头像 发表于 05-26 14:32 3109次阅读

    STM32学习笔记之RTC实时时钟2

    STM32实时时钟RTC)是一个独立的定时器。 STM32RTC 模块拥有一组连续计数的计数器,在相应软件
    的头像 发表于 05-26 14:26 836次阅读
    <b class='flag-5'>STM32</b>学习笔记之<b class='flag-5'>RTC</b><b class='flag-5'>实时时钟</b>2

    STM32学习笔记之RTC实时时钟1

    STM32实时时钟RTC)是一个独立的定时器。 STM32RTC 模块拥有一组连续计数的计数器,在相应软件
    的头像 发表于 05-26 14:26 1283次阅读
    <b class='flag-5'>STM32</b>学习笔记之<b class='flag-5'>RTC</b><b class='flag-5'>实时时钟</b>1

    实时时钟RTC:32.768kHz晶振

    实时时钟(RTC: Real-Time Clock)是集成电路,通常称为时钟芯片。目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。
    的头像 发表于 05-08 10:45 1845次阅读
    <b class='flag-5'>实时时钟</b><b class='flag-5'>RTC</b>:32.768kHz晶振

    基于STM32单片机RTC实时时钟使用库文件设计

    基于STM32单片机RTC实时时钟使用库文件设计源代码
    发表于 04-26 14:28 1次下载