STM32学习笔记之RTC(实时时钟)和BKP(备份寄存器)

发布者:九九归一74最新更新时间:2018-10-15 来源: eefocus关键字:STM32  RTC  实时时钟  BKP  备份寄存器 手机看文章 扫描二维码
随时随地手机看文章

RTC:

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

   RCC_BDCR:备份域控制寄存器。其LSEON、LSEBYP、RTCSEL和RTCEN位处于备份域,在复位后处于写保护状态,只有在电源控制寄存器(PWR_CR)中的DBP位置 1 后才能对这些位进行改动;这些位只能由备份域复位清除。

   备份域复位:软件复位,RCC_BDCR 寄存器 BDRST位置1产生;

               在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。 

   系统复位后,对后备寄存器和RTC的访问被禁止,执行以下操作将使能对后备寄存器和RTC的访问。

   后备寄存器和RTC的访问:

   1)设置寄存器 RCC_APB1ENR 的PWREN 和BKPEN位,使能电源和后备接口时钟。

   RCC_APB1ENR:APB1外设时钟使能寄存器;

   PWREN:电源接口时钟使能位,置1有效;BKPEN:备份接口时钟使能位,置1有效;

   后备接口为:RTC与APB1总线连接的的APB1接口,系统通过APB1接口访问RTC寄存器;

   2)电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。 

   PWR_CR:电源控制寄存器,DPB位:取消后备区域的写保护位,置1则允许写入RTC和后备寄存器。

   组成部分:

   1)APB1接口,由APB1总线时钟驱动,用来与APB1总线相连。此单元还包含一组16位寄存器(RTC_CRH/L),可通过APB1总线    对其进行读写操作。

   2)RTC核心,由一组可编程计数器组成,分成两个主要模块:

      i) 是RTC的预分频模块(RTC_PRL),包含了一个20位的RTC预分频器,可编程产生最长为1秒的RTC时间基准TR_CLK。如果在RTC_CR寄存器中设置了相应的允许位(RTC_CRH-SECIE位),则在每个TR_CLK周期中RTC产生一个中断(秒中断)。

      ii)一个32位的可编程计数器 RTC_CNT,可被初始化为当前的系统时间,对 TR_CLK信号计数操作。如果RTC_CRH寄存器中设置了相应的允许位(OWIE),计满时会产生溢出中断;

         系统时间按TR_CLK周期累加并与存储在RTC_ALR寄存器中的可编程时间相比较,如果RTC_CRH控制寄存器中设置了相应允许位(ALRIE),比较匹配时将产生一个闹钟中断。

简化的RTC框图:

STM32学习笔记之RTC(实时时钟)和BKP(备份寄存器)

   复位过程:

   1)APB1接口由系统复位;

   2)RTC核心(RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV 寄存器)只能由后备域复位。

   读RTC寄存器:

   软件通过APB1接口访问RTC的预分频值、计数器值和闹钟值。但是,相关的可读寄存器只在与RTC APB1时钟进行重新同步的RTC时钟的上升沿被更新。如果APB1接口曾经被关闭而读操作又是在刚刚重新开启APB1之后,则在第一次的内部寄存器更新之前,从APB1上读出的RTC寄存器数值可能被破坏了(通常读到0)。

   下述几种情况下能够发生这种情形:

发生系统复位或电源复位;

系统刚从待机模式唤醒;

系统刚从停机模式唤醒。

因此,若在读取RTC寄存器时,RTC的APB1接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置 1。

RTC的 APB1接口不受WFI和WFE等低功耗模式的影响,APB1接口被禁止时(复位、无时钟或断电)RTC核仍保持运行状态。

   配置RTC寄存器:

   必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器。

   对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询 RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是 1时,才可以写入RTC寄存器。

   配置过程: 

   1.  查询RTOFF位,直到RTOFF的值变为 1;

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

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

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

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

RTC控制寄存器低位(RTC_CRL):

STM32学习笔记之RTC(实时时钟)和BKP(备份寄存器)
STM32学习笔记之RTC(实时时钟)和BKP(备份寄存器)
STM32学习笔记之RTC(实时时钟)和BKP(备份寄存器)

   RTC校准:

   将 RTCCLK 64分频后输出到防入侵引脚(PC.13),以供校验时钟是否正确。

BKP:

   备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。

   BKP控制寄存器用来管理侵入检测和RTC校准功能。

   特性:

   用来管理防侵入检测并具有中断功能的状态/控制寄存器;

   用来存储RTC校验值的校验寄存器;

   在PC13引脚(当该引脚不用于侵入检测时)上输出RTC校准时钟,RTC闹钟脉冲或者秒脉冲。

   访问:

   复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。

   1)、通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口(与APB1总线连接的接口)的时钟

   2)、电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。

   侵入检测:

   当TAMPER引脚上的信号从0变成1或者从1变成0(取决于备份控制寄存器BKP_CR的TPAL位),会产生一个侵入检测事件,侵入检测事件将所有数据备份寄存器内容清除;

   侵入检测信号是边沿检测的信号与侵入检测允许位的逻辑与,从而在侵入检测引脚被允许前发生的侵入事件也可以被检测到;

   设置BKP_CSR寄存器的TPIE位为 1,当检测到侵入事件时就会产生一个中断。

   在一个侵入事件被检测到并被清除后,侵入检测引脚TAMPER应该被禁止。然后,在再次写入备份数据寄存器前重新用TPE位启动侵入检测功能。这样,可以阻止软件在侵入检测引脚上仍然有侵入事件时对备份数据寄存器进行写操作。当VDD电源断开时,侵入检测功能仍然有效。为了避免不必要的复位数据备份寄存器,TAMPER

引脚应该在片外连接到正确的电平。

   RTC校准:

   RTC时钟可以经64分频输出到侵入检测引脚TAMPER上。通过设置RTC校验寄存器(BKP_RTCCR)的CCO位来开启这一功能。

   寄存器:

   BKP_DRx (备份数据寄存器x x = 1 … 10)

   BKP_DRx寄存器不会被系统复位、电源复位、从待机模式唤醒所复位,它们可以由备份域复位来复位或(如果侵入检测引脚TAMPER功能被开启时)由侵入引脚事件复位。

   BKP_RTCCR(RTC时钟校准寄存器)

   CCO 位:校准时钟输出(Calibration clock output)

           此位置1可以在侵入检测引脚输出经64分频后的RTC时钟。当CCO位置1时,必须关闭侵入检测功能(TPE 位)以避免检测到无用的侵入信号;当VDD供电断开时,该位被清除。

   ASOE 位:允许输出闹钟或秒脉冲(Alarm or second output enable)

           该位允许RTC闹钟或秒脉冲输出到TAMPER引脚上,输出脉冲的宽度为一个RTC时钟的周期。设置ASOE位时不能开启TAMPER的功能,该位只能被后备区的复位所清除。

   ASOS 位:闹钟或秒输出选择(Alarm or second output selection)

           当设置了ASOE位,ASOS位可用于选择在TAMPER引脚上输出的是RTC秒脉冲还是闹钟脉冲信号。

           0:输出RTC闹钟脉冲

           1:输出秒脉冲          该位只能被后备区的复位所清除。

   BKP_CR(备份控制寄存器)

   TPE 位:0:侵入检测TAMPER引脚作为通用IO口使用

           1:开启侵入检测引脚作为侵入检测使用

   TPAL 位:侵入检测TAMPER引脚有效电平(TAMPER pin active level)

           0:侵入检测TAMPER引脚上的高电平会清除所有数据备份寄存器(如果TPE位为1)

           1:侵入检测TAMPER引脚上的低电平会清除所有数据备份寄存器(如果TPE位为1)  

 

   BKP_CSR(备份控制/状态寄存器) 主要是侵入事件和中断的标志位和清除标志位、中断允许位。


关键字:STM32  RTC  实时时钟  BKP  备份寄存器 引用地址:STM32学习笔记之RTC(实时时钟)和BKP(备份寄存器)

上一篇:STM32关于GPIO的8种模式理解
下一篇:STM32F4的4k备份SRAM

推荐阅读最新更新时间:2024-03-16 16:16

stm32 ADC理解
神通广大的各位互联网的网友们、大家早上中午晚上好好好、今早起来很准时的收到了两条10086的扣月租的信息、心痛不已、怀着这心情、又开始了STM32的研究、早上做了计算机控制的PID实验,又让我想起了飞思卡尔的电磁小车、、曾经的电感电压采集让我心碎的多少次、又让我开心了多少次、但已经成为过去、(软件和硬件都会影响),呵呵、估计有人已经猜到我接下来要介绍什么了、在你们面前、我已无秘密、额、其实标题也直接“表白”了、看到标题,别吓到哈、并不是要用英文写、至于原因是什么、请往下看: 好吧、言归正传:STM32的ADC模块,请允许我用如此通俗的语言:普通话 来介绍STM32ADC模块的特色 1、1MHz转换速率、12位转换结果(12
[单片机]
<font color='red'>stm32</font> ADC理解
STM32:stm32f10x_gpio.c中GPIO_Init的分析说明
1 /** 2 *函数功能:初始化引脚模式 3 *参数说明:GPIOx,该参数为GPIO_TypeDef 类型的指针,指向GPIO 端口的地址 4 * GPIO_InitTypeDef:GPIO_InitTypeDef 结构体指针,指向初始化变量 5 */ 6 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 7 { 8 uint32_t currentmode =0x00,currentpin = 0x00,pinpos = 0x00,pos = 0x00; 9 uint32_t tmpreg = 0x00, pinmas
[单片机]
STM32——如何配置通用定时器中断
STM32的定时器 STM32F103ZET6一共有8个定时器,其中分别为: 高级定时器(TIM1、TIM8);通用定时器(TIM2、TIM3、TIM4、TIM5);基本定时器(TIM6、TIM7)。 除非APB1的分频系数是1,否则通用定时器的时钟等于APB1时钟的2倍。 默认调用SystemInit函数情况下: SYSCLK=72M AHB时钟=72M APB1时钟=36M 所以APB1的分频系数=AHB/APB1时钟=2 所以,通用定时器时钟CK_INT=2*36M=72M 定时器中断的一般步骤 实例要求:通过TIM3的中断来控制led1的亮灭 硬件:LED——GPIOB,GPIO_Pin_5 1、使能
[单片机]
<font color='red'>STM32</font>——如何配置通用定时器中断
基于STM32的SPI通信
引言 SPI是串行外设接口的缩写,是一种高速的,全双工,同步的通信总线。由于SPI高速和同步的特性,使其成为嵌入式系统和小型设备中使用最广泛的几种通信接口之一。本文将详细讲解一下SPI,并且最后基于STM32编写一个例程。 介绍 SPI简介 SPI(Serial Peripheral Interface)是一种串行外设接口,用于在微控制器(MCU)或数字信号处理器(DSP)等主设备与外部设备之间进行通信。SPI的设计旨在实现高速数据传输和简单的硬件实现。 SPI接口通常由一个主设备(Master)和一个或多个从设备(Slave)组成。主设备控制通信的时序和数据传输,而从设备根据主设备的指令进行响应。SPI通信基于全双工传输
[单片机]
基于<font color='red'>STM32</font>的SPI通信
stm32专题三十:12864 IIC驱动
1 IIC发送数据 / 命令时序 2 12864 图形显示(显存) RAM的大小是128×64位,RAM分为8页,从PAGE0到PAGE7,用于单色128x64点阵显示。 3 行列设置 1 设置起始行坐标(设置页) 命令 0XB0 ~ 0XB7 用于设置分页,所以我们显示的分页要 + 偏移(0XB0) 2 设置起始列坐标 4 制作字模 1 字模软件设置方式: 2 生成的字模的批处理: 生成的字模如图所示,我们要转成 0X00 这种格式: 使用 sublime 这个软件,可以进行批处理(先全选,然后再 快捷键 Ctrl + Shift + L): 字模生成完毕。 驱动程序如下所示
[单片机]
<font color='red'>stm32</font>专题三十:12864 IIC驱动
STM32中断优先级谁更高 主要根据两个方面来判断
一:综述 STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级 的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。 二:优先级判断 STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作‘亚优先级’或‘副优先级’,每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在
[单片机]
详解STM32单片机堆栈
学习STM32单片机的时候,总是能遇到“堆栈”这个概念。分享本文,希望对你理解堆栈有帮助。 对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数据。堆栈操作由PUSH、POP两条指令来完成。而程序内存可以分为几个区: 栈区(stack) 堆区(Heap) 全局区(static) 文字常亮区程序代码区 程序编译之后,全局变量,静态变量已经分配好内存空间,在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数指针入栈,保护现场,以便于中断处理完之后再回到之前执行的函数。 栈是从高到低分配,堆是从低到高分配。 普通单片机与STM32单片机中堆栈的区别 普通单片机启动时,不需要用b
[单片机]
详解<font color='red'>STM32</font>单片机堆栈
STM32--读写内部Flash
Flash模块组织 存储器被组织为程序存储器模块,数据EEPROM模块和信息块。 程序存储器块分为4 KB的扇区,每个扇区都是进一步分成16页,每页256字节。 程序存储器页面擦除 该操作用于擦除程序存储器中的页面(64个字)。要做到这一点: ●解锁FLASH_PECR寄存器 1.将PEKEY1 = 0x89ABCDEF写入编程/擦除密钥寄存器(FLASH_PEKEYR) 2.将PEKEY2 = 0x02030405写入编程/擦除密钥寄存器(FLASH_PEKEYR) ●解锁程序存储器 ●解锁FLASH_PECR寄存器 1. 将PRGKEY1 = 0x8C9DAEBF写入程序存储器密钥寄存器 (FLASH_
[单片机]
STM32--读写内部Flash
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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