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

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

3天内不再提示

配置RTC寄存器的详细步骤 RTC相关库函数说明

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-06-10 08:56 次阅读

配置RTC寄存器
1.查询RTOFF位,知道RTOFF的值为1.

2.置CNF值为1,进入配置模式。

3.对一个或者多个RTC寄存器进行写操作。

4.清除CNF标志位,退出配置模式。

5.查询RTOFF,直到RTOFF位变1,已确认写操作已经完成。

仅当CNF标志位被清除时,写操作才能进行,这个操作至少需要3个RTCCLK周期。

在这里插入图片描述

RTC相关库函数

RTC时钟源和时钟操作函数:

void RCC_RTCCLKConfig(uint32_t  CLKSource);//时钟源选择
void RCC_RTCCLKCmd(FunctionalState NewState)//时钟使能

RTC配置函数(预分频,计数值):

void RTC_SetPrescaler(uint32_t PrescalerValue);//预分频配置:PRLH/PRLL
void RTC_SetCounter(uint32_t CounterValue);//设置计数器值:CNTH/CNTL
void RTC_SetAlarm(uint32_t AlarmValue);//闹钟设置:ALRH/ALRL

RTC中断设置函数:

void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState);//CRH

RTC配置函数:

void RTC_EnterConfigMode(void);//允许RTC配置 :CRL位 CNF
void RTC_ExitConfigMode(void);//退出配置模式:CRL位 CNF

RTC同步函数:

void RTC_WaitForLastTask(void);//等待上次操作完成:CRL位RTOFF
void RTC_WaitForSynchro(void);//等待时钟同步:CRL位RSF

相关状态位获取清除函数:

FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG);
void RTC_ClearFlag(uint16_t RTC_FLAG);
ITStatus RTC_GetITStatus(uint16_t RTC_IT);
void RTC_ClearITPendingBit(uint16_t RTC_IT);

其他相关函数(BKP等)

PWR_BackupAccessCmd();//BKP后备区域访问使能
RCC_APB1PeriphClockCmd();//使能PWR和BKP时钟
RCC_LSEConfig();//开启LSE,RTC选择LSE作为时钟源 
PWR_BackupAccessCmd();//BKP后备区域访问使能
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);//读BKP寄存器
void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);//写BKP

配置RTC步骤
①使能PWR和BKP时钟:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
1
② 使能后备寄存器访问:
PWR_BackupAccessCmd(ENABLE); //使能 RTC 和后备寄存器访问
1
③复位备份区域,开启外部低速振荡器。
BKP_DeInit();//复位备份区域
1
④ 配置RTC时钟源,使能RTC时钟:
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //选择 LSE 作为 RTC 时钟(RCC_RTCCLKSource_LSI 和 RCC_RTCCLKSource_HSE_Div128)
RCC_RTCCLKCmd(ENABLE); //使能 RTC 时钟
1
2
⑤ 设置RTC预分频系数:RTC_SetPrescaler();
RTC_EnterConfigMode();/// 允许配置 
RTC_SetPrescaler(32767); //设置RTC预分频的值
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成

⑥ 设置时间:

RTC_SetCounter();
RTC_EnterConfigMode();/// 允许配置
void RTC_SetCounter(uint32_t CounterValue);
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成

⑦开启相关中断(可选):

void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState);//RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能 RTC 秒中断

⑧编写中断服务函数:

RTC_IRQHandler();

⑨部分操作要等待写操作完成和同步。

  RTC_WaitForLastTask();//等待最近一次对RTC寄存器的写操作完成
  RTC_WaitForSynchro(); //等待RTC寄存器同步

具体的代码,库函数写的太多了,我会用CubeMx配置下,用HAL库写一个例程,几十行就可以解决RTC

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

    关注

    31

    文章

    5250

    浏览量

    119192
  • RTC
    RTC
    +关注

    关注

    2

    文章

    511

    浏览量

    65895
  • 库函数
    +关注

    关注

    0

    文章

    177

    浏览量

    33908
收藏 人收藏

    评论

    相关推荐

    原创:sam4s16c的寄存器配置基础教程---RTC配置

    用于sam4s系列。看不懂的自己仔细研究Datasheet吧。个人的爱好是喜欢寄存器直接配置。看官方的库,太乱,太累。不喜欢拿来主义。第六部分配置RTC首先,停止
    发表于 12-01 11:26

    库函数寄存器的区别

    0. 库函数寄存器的区别本质上是一样的。可以在库函数模板里面,直接操作寄存器,因为官方库相关头文件有
    发表于 08-10 06:23

    怎么通过库函数来实现相关寄存器配置

    看门狗的原理是什么?与独立看门狗相关联的寄存器有哪些?怎么通过库函数来实现相关寄存器配置
    发表于 08-11 06:54

    RTC时钟详细步骤

    RTC时钟详细步骤RTC概述RTC相关库函数
    发表于 08-18 06:41

    RTC相关常用寄存器配置步骤

    RTC还包含用于管理低功耗模 式的自动唤醒单元RTC原理框图:RTC相关常用寄存器RTC日历
    发表于 01-13 07:11

    STM32串口寄存器库函数配置方法

    STM32串口寄存器库函数配置方法STM32常用寄存器库函数串口配置一般
    发表于 02-22 06:22

    为什么RTC_GPIO_PINx寄存器中的RTC_IO_TOUCH_PADx_TO_GPIO位的定义和控制位说明

    在技术参考手册中描述RTC GPIO 与 RTC pad之间的连接控制寄存器, 每个pad 的模拟和RTC 功能是由RTC_GPIO_PIN
    发表于 04-24 07:45

    《振南电子STM32视频教程》第十四讲:RTC和BKP

    [第14讲] RTC和BKP(72分钟),由何强主讲.本课主要讲解:(1).RTC模块要点讲解;(2).RTC寄存器讲解;(3).BKP特点;(4).BKP
    发表于 10-09 16:22 1174次阅读

    STM32单片机RTC时钟的使用方法及步骤

    系数等 根据需要配置时钟,日期,闹钟,唤醒,输出,时间戳,备份寄存器等模块 根据需要配置和打开中断,其中 RTC Alarm ——EXTI line 17
    发表于 02-11 10:00 3.5w次阅读
    STM32单片机<b class='flag-5'>RTC</b>时钟的使用方法及<b class='flag-5'>步骤</b>

    STM32库函数寄存器应该如何操作

    从开始接触51单片机,到现在开始转型学习功能更加强大的STM32f407系列,学习过程中引入了库函数及相应操作,当时赶着进度做点东西出来,有点不求甚解。现在返回来求索:相比于原来51单片机的寄存器
    发表于 09-10 17:26 3次下载
    STM32<b class='flag-5'>库函数</b>和<b class='flag-5'>寄存器</b>应该如何操作

    如何搭建寄存器的工程环境详细方法步骤说明

    本文档的主要内容详细介绍的是如何搭建寄存器的工程环境详细方法步骤说明
    发表于 09-19 08:00 0次下载
    如何搭建<b class='flag-5'>寄存器</b>的工程环境<b class='flag-5'>详细</b>方法<b class='flag-5'>步骤</b><b class='flag-5'>说明</b>

    STM32F4 HAL库函数说明下载

    STM32F4 HAL库函数说明下载
    发表于 05-26 09:27 73次下载

    【STM32】RTC详解

    00. 目录文章目录00. 目录01. RTC概述02. RTC主要特性03. RTC部分功能3.1 时钟和预分频3.2 实时时钟和日历04. R
    发表于 12-04 17:21 26次下载
    【STM32】<b class='flag-5'>RTC</b>详解

    2021-04-17 STM32串口寄存器库函数配置

    STM32串口寄存器库函数配置方法STM32常用寄存器库函数串口配置一般
    发表于 12-28 19:13 7次下载
    2021-04-17  STM32串口<b class='flag-5'>寄存器</b><b class='flag-5'>库函数</b><b class='flag-5'>配置</b>

    RTC时钟源和RTC寄存器的基本知识

    RTC控制寄存器 (RTC_CRH, RTC_CRL)
    的头像 发表于 06-10 08:53 7291次阅读
    <b class='flag-5'>RTC</b>时钟源和<b class='flag-5'>RTC</b><b class='flag-5'>寄存器</b>的基本知识