stm32F1RTC

发布者:心愿实现最新更新时间:2019-11-18 来源: eefocus关键字:stm32F1  RTC  实时时钟 手机看文章 扫描二维码
随时随地手机看文章

RTC


概述


STM32 的实时时钟(RTC)是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数


的计数器, 在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当


前的时间和日期。


RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP)写保护。(每次在操作RTC时要先使能后备寄存器的访问)


RTC可以实现的功能


1:时钟日历的显示


2:闹钟功能


3:秒中断操作


配置过程


1:开启时钟源


//开启电源时钟和备份域时钟


RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);


2:使能后备寄存器的访问


//上面提到过系统复位后会自动禁止访问后备寄存器和RTC


PWR_BackupAccessCmd(ENABLE);


3:复位备份域


//取消写保护后要清除备份域的数据,清除之前的设置(看情况而定,并不是每次都要复位)


BKP_DeInit();


4:开启外部低速振荡器


RCC_LSEConfig(RCC_LSE_ON);


5:等待LSE启动稳定


while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)


6:选择RTC的时钟


RTC 时钟的选择,还有 RCC_RTCCLKSource_LSI 和 RCC_RTCCLKSource_HSE_Div128


两个,前者为 LSI,后者为 HSE 的 128 分频


RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);


7:使能RTC时钟


RCC_RTCCLKCmd(ENABLE);


8:等待最近一次对RTC寄存器的写操作完成,等待RTC寄存器同步


RTC_WaitForLastTask();


RTC_WaitForSynchro();


9:相关配置


下面这几步操作顺序可以替换,但是逻辑不能乱


RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能 RTC 秒中断


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


RTC_EnterConfigMode(); // 允许配置


RTC_SetPrescaler(32767); //设置 RTC 预分频的值


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


RTC_SetCounter(seccount);//设置时间


RTC_ExitConfigMode(); //退出配置模式


 


从上面的过程中我们可以看出,RTC时钟的配置过程主要分为以下几个模块


1:允许访问


2:时钟源选择


3:允许配置设置相关参数(分频值,时间,中断)


只是在操作的时候我们有些要求


1:必须取消写保护(系统复位后会自动禁止访问后备寄存器和RTC)


2:每次配置前要先寄存器同步,允许配置,等待上次操作完成


3:要记得退出配置


这些要求手册中的寄存器介绍中都有描述

关键字:stm32F1  RTC  实时时钟 引用地址:stm32F1RTC

上一篇:stm32 看门狗 BKP(HAL库)
下一篇:stm32f0_GPIO

推荐阅读最新更新时间:2024-11-04 14:29

STM32F030低温下RTC不工作
1 前言 客户反馈在批量生产阶段,发现部分产品的MCU的RTC在低温(0℃)下工作不正常,但是在常温下又是正常的,且其他正常的MCU的RTC在常温与低温下都是正常的。 2 问题跟进与分析 通过与客户邮件沟通,了解到客户使用的MCU型号是:STM32F030C6T6TR。在产品的主从结构中主要用作电源管理和时钟管理。通过客户的描述,似乎相同型号不同片子都存在较大的差异。 由于时间紧急,在了解到初步信息后立即拜访客户,针对客户认为有问题的MCU芯片做针对性试验。通过STM32CubMx生成测试工程,分别使用LSI(40K),LSE(32.768K),RTC工作时每秒通过LED1(PB5)取反一次(通过LED1灯是否闪烁来指示RTC是
[单片机]
STM32F030低温下<font color='red'>RTC</font>不工作
Linux-2.6.32.2内核在mini2440上的移植(五)---激活RTC驱动
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 【1】在初始化文件中加入RTC 设备结构 Linux-2.6.32.2 内核对24
[单片机]
嵌入式驱动移植之RTC驱动移植
移植环境 主机开发环境:ubuntu12.04 BootLoader:u-boot-1.1.6 kernel:linux-2.6.30.4 CPU:s3c2440 开发板:TQ2440 移植步骤 1、 添加平台对 RTC 的支持 在内核 2.6.30.4上的实时时钟驱动是非常完善的,只需要添加 RTC 设备到设备初始化列表中就行了。 修改内核源码“arch/arm/mach-s3c2440/mach-smdk2440.c”文件,在行添加如下内容: static struct platform_device *smdk2440_devices __initdata = { &s3c_device_usb, &s3c_
[单片机]
嵌入式驱动移植之<font color='red'>RTC</font>驱动移植
STM32之实时时钟和备份寄存器介绍
在本文中主要讲述RTC寄存器的配置问题。在配置RTC寄存器的时候必须配置RTC_CRL寄存器中的CNF位,使得RTC进入配置模式之后,才能写入RTC_PRL,RTC_CNT,PTR_ALR寄存器。另外很重要的是,在对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行,可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是1时,才可以写入RTC寄存器。 配置RTC寄存器的过程如下: 1.查询RTOFF位,知道RTOFF的值为1. 2.置CNF值为1,进入配置模式。 3.对一个或者多个RTC寄存器进行写操作。 4.清除CNF标志位,退出配置模式。 5.查
[单片机]
基于 STM32 RTC的万年历
例子基本是照抄官方的 万年历算法也没深入研究 主要是大赛 都要求会用DS1302 若我用STM32来做 肯定不用那个片子了。 这个用的是 LSE (片外低速时钟)配合 掉电寄存器来确定是否配置时钟。 注释很全 话不多说了。 u8 TimeDisplay; int main(void) { SystemInit(); stm32_Init (); //GPIO PA8 Init USART_Configuration(); //USART2 9600-8-N-1 NVIC_Configuration(); //Enable the RTC Interrupt RTC_Configuration(); //RTC的启动 s
[单片机]
基于 STM32 <font color='red'>RTC</font>的万年历
S3C6410裸机RTC实时时钟
相对于STM32,6410的RTC是相当的简单. /*************************************************************************************************************   * 文件名: RTC.c   * 功能:      S3C6410 RTC底层驱动函数   * 作者:      cp1300@139.com   * 创建时间:    2012年3月28日21:52   * 最后修改时间:2012年3月28日   * 详细:      RTC相关底层驱动函数  **********************
[单片机]
STM32F1命名规则及选型
一. STM32F1命名规则 焊芯片时需要引脚对应,使芯片上的丝印正对我们(正方形),会看到芯片的左下角有一个小的凹圆圈,有些芯片(引脚较多)的右上角也会有一个稍微大一点儿的凹圆圈,靠近左下角凹圆圈的引脚为1,然后按逆时针的方向逐个增长排序。 二. STM32F103xx快速选型 STM32F103xx是一个完整的系列,其成员之间是完全地脚对脚兼容,软件和功能上也兼容。在根据容量分类的轻快下,小容量产品具有较小的闪存存储器、 RAM空间和较少的定时器和外设。而大容量的产品则具有较大的闪存存储器、 RAM空间和更多的片上外设,如SDIO、 FSMC、 I2S和DAC等。 在参考手册中, STM32F103x4和STM32F103
[单片机]
<font color='red'>STM32F1</font>命名规则及选型
STM32 RTC时钟设置
RTC移植时注意两点 (1)RTC需要中断函数。每秒中断一次,更新需要显示的标志。 (2)RTC运行中校正时间,更新RTC_CNTx时不能直接调用Time_Adjust()函数,需要开启PWR 和 BKP 时钟,且允许访问BKP域。 void RTC_SetCurrentTime(struct rtc_time *tm) { /* Enable PWR and BKP clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); /* Allow access to BKP Domain */ PWR_BackupA
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved