[正点原子]STM32开发板F103 第41讲 RTC实时时钟备份区域BKP原理

发布者:雅致书香最新更新时间:2019-09-09 来源: eefocus关键字:STM32  RTC  实时时钟  备份区域  BKP 手机看文章 扫描二维码
随时随地手机看文章

RTC模块与 时钟配置系统在后备区域,在复位时候不会被清除(框图: 中文参考手册)


如何使用RTC实现时钟?RTCCLK


RTC的时钟有几个来源有三种  32.768khz  8Mhz  40khz


RTC_PRL是自动重装载寄存器


RTC_DIV 预分频余数寄存器 RTC_DIV的作用就是  可以提供一个更加精确的时钟,


时钟开启之后会给RTC_PRL写一个值(比如100),那么RTCCLK就会被 /100 之后得到 TR_CLK。 TR_CLK的一个周期有100个  RTCCLK ,RTC_DIV在你装载之后它的值就是100,他在 RTCCLK的控制下每一个时钟  减一,


假如RTCCLK=100hz,那么 RTCCLK/RTC_PRL=100/100=1HZ=TR_CLK


RTC_DIV就是从100往下减, 那么需要RTCCLK的一百个周期,RTC_DIV(向下计数器)就会溢出,那么就是每一个RTCCLK周期RTC_DIV就减一。RTC_DIV 比TR_CLK更精确,那么,由以上公式可知,TR_CLK就是1hz也就是1s。


 后面有一个 RTC_CNT 32位可编程计数器(向上计数),


每一个TR_CLK就会加一,一直到overflow(溢出)就会产生中断,


还有一个秒中断 RTC_Second,(一秒钟产生一次中断)


还有一个 RTC_ALR 闹钟中断,当 RTC_ALR=RTC_CNT 的时候就会产生闹钟中断。


BKP备份寄存器的访问,

RTC相关寄存器

RTC 相关的寄存器定义在stm32f10x.h里面有一个结构体。


寄存器的介绍在《中文参考手册》


上图中的 RTC_CRH  控制寄存器主要是一些中断的使能位,如果要开启中断就将相应位使能。

OWF   是溢出标志


ALRF  闹钟标志 


SECF  秒标志


位3   RSF 寄存器同步标志,在需要改寄存器之前先要确定RSF寄存器已经同步


位4  CNF位  配置标志 ,如果要修改CRH/CRL 等寄存器的时候,先要将该位置 1,进入配置模式,配置完之后要将他配置为0,退出配置模式。


RTCOFF 在对RTC寄存器进行写操作之前必须先判断上一次写操作已经结束,也就是判断上一次写操作是否置位。


RTC_PRLH 与RTC_PRLL 就是预分频装载寄存器的高位和低位

RTC_DIV 是以RTC_CLK为时钟所以他比TR_CLK要精确


 

表示当前时间的寄存器,通常会配置为1秒钟加一

以上为闹钟寄存器,也是两个16位的,一共32位,它与计数器寄存器基本上是一样的,因为他要与计数器寄存器相比较相等就会产生中断。

1.先要查询RTOFF位,等待他为 1 表明上一次操作已经完成了。


2设置CNF位为1,进入配置模式


3操作寄存器


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


5 查询RTOFF位,直到它为“1”,表明写操作已经完成。

下面就看他的库函数。


时钟源选择函数  时钟使能  在RCC文件当中。


使能电源后备区域的时钟。


使能后备区域的寄存器访问。


关键字:STM32  RTC  实时时钟  备份区域  BKP 引用地址:[正点原子]STM32开发板F103 第41讲 RTC实时时钟备份区域BKP原理

上一篇:正点原子STM32F4中断优先级管理
下一篇:STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理

推荐阅读最新更新时间:2024-11-02 01:48

NVIC_PriorityGroupConfig()说明
STM32(Cortex-M3)中有两个优先级的概念 抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中
[单片机]
1、STM32学习笔记——系统时钟初始化函数
STM32有三种不同的时钟源可被用来驱动系统时钟(SYSCLK): 1:HSI振荡器时钟(内部时钟) 2:HSE振荡器时钟 (外部时钟,即晶振所提供) 3:PLL时钟(锁相环时钟) 这些设备有以下2种二级时钟源: (1)40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。 (2)32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。 当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。 1:常用配置如下 使用HSE作为PLL的输入源,将PLL的输出配置为72MHZ,然后将PLL作为系统时钟,最后将其他时钟配置为
[单片机]
1、<font color='red'>STM32</font>学习笔记——系统时钟初始化函数
STM32学习笔记之简易Bootloader串口升级设计
概念简介 在学习制作串口升级 Bootloader 之前,我们先了解一下STM32的 IAP (In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级. 设计这样的功能需要有两个项目代码: Bootloader 程序: 该部分代码用于实现通过某种通信方式(如 USB,USART)接收程序或数据,执行对第二部分代码的更新,通常存储于 Flash 的起始地址(0x08000000); App 程序: 该部分代码是产品实现业务逻辑正常运行的代码,该部分
[单片机]
<font color='red'>STM32</font>学习笔记之简易Bootloader串口升级设计
STM32中IO口模拟串口输出的乱码现象
因为芯片串口不够用,只好用IO口模拟串口,在网上下载了个模拟串口的程序,可运行,但发现串口输出隔几个字符就会出现乱码,主要部分代码如下: [cpp] view plain copy#define OI_TXD PAout(12) #define OI_RXD PAin(11) #define BuadRate_9600 100 u8 len = 0; //接收计数 u8 USART_buf[11]; //接收缓冲区 u8 recvStat = COM_STOP_BIT; u8 recvData = 0; void IO_TXD(u8 Data) { u8 i = 0; OI_TXD = 0; delay_us(BuadRate
[单片机]
<font color='red'>STM32</font>中IO口模拟串口输出的乱码现象
基于STM32的红外测温仪的设计与实现
红外测温仪是一种将红外技术与微电子技术相结合的新型温度测量仪器。与传统接触式测温仪器相比,具有测温精度高、非接触、不影响被测对象温度场、响应速度快及稳定性好等一系列优点,在电力、石油、化工、医疗等领域得到广泛应用 。 热释电红外测温仪是利用热释电效应工作的一种新型红外测温仪。与其他传统测温仪相比,具有不需制冷、能在室温下工作和光谱响应宽等优点,且其灵敏度高、响应速度快、抗干扰能力强 。本文利用热释电探测器,结合32 bit ARM核处理器低功耗、高性能和低成本的优点,设计了一个以ARM微控制器STM32为核心的红外测温仪。 1 红外测温的原理 一切温度高于绝对零度的物体都在不停地向周围空间发出红外辐射能量,其辐射能量的大小及其波
[单片机]
基于<font color='red'>STM32</font>的红外测温仪的设计与实现
STM32入门系列-复位程序
已经对启动文有了大致了解,再来看看系统在复位过程中做了哪些工作。复位程序如下: ; Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP 在复位程序内,声明了外部文件标号SystemInit和__main(__main 是一个标准的C语言库函数,用于初始化用户堆栈,最终还是进入main),因此需要在外部文件中按照这个标号名写出对应的函数,否则编译器将报错。在库文件system_stm32f10x.c内就
[单片机]
STM32的时钟树深入详解
在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。 2)对于少于100脚的产品,有2种接法: 2.1)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。 2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出’0’。此方法可以减小功耗并(相对上面2.1)节省2个外部电阻。 HSI内部8MHz的RC振荡器的误差在1%左右,内部RC振荡器的精度通常比用HSE(外部晶振)要差上十倍以上。STM32的ISP
[单片机]
<font color='red'>STM32</font>的时钟树深入详解
stm32: 固件库文件说明
关于固件库文件说明 固件库文件夹STM32F10x_StdPeriph_Lib_V3.5.0下文件说明: 一、Libraries文件夹主要文件有: 1、core_cm3.c , core_cm3.h :CMSIS核心文件,通过进入Cortex_M3内核的接口 2、startup文件夹下是系统启动文件,根据不同的芯片选用启动文件,103系列芯片选用startup_stm32f10x_hd.s 3、system_stm32f10x.c , system_stm32f10x.h :设置系统及总线时钟,其中SystemInit函数在系统启动时,设置时钟系统。 4、stm32f10x.h :系统寄存器定义、声明、内存操作。 二、P
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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