蓝桥杯嵌入式学习STM32之RTC时钟原理及配置

本文详细介绍了STM32单片机中RTC时钟的工作原理,包括RTC时钟源、预分频配置、备份寄存器以及配置流程。重点强调了RTC寄存器同步和中断配置的重要性,提供了配置RTC的注意事项和心得。
摘要由CSDN通过智能技术生成

RTC时钟原理

单片机内部有一块断电不丢失的寄存器(由额外电池一般是纽扣电池供电),每隔1s加1,然后记录的是与1970年1月1日0时的秒差。

工作原理细解

RTC模块的一些配置是被一个叫做后备区域保护着(禁止写),所以设置之前要先取消后备区域写保护。
在这里插入图片描述
首先RTC CLK有三个来源。最主要的是外部低速晶振。其他两个来源我懒得打了,可以参考时钟讲解
RTC_DIV会随着预装载得值减到0然后产生一个脉冲。也就是预分频啦,将TR_CLK搞成1s的周期,同时重装载。
RTC_CNT就是记录目前离1970年的秒数。
旁边的三个依次是:秒中断,溢出中断,闹钟中断。

注意:RTC的寄存器是一个很独立的寄存器,我们可以通过APB1去访问它。但是访问回来的值只有在RTC和APB1时钟同步的情况下才是准确的。

BKP备份寄存器

里面有42个寄存器存放一些数据,这些数据不丢失(因为不断电)。
你可以往里面放一下校正值什么的,类似于储物柜。

相关寄存器

RTC控制寄存器 (RTC_CRH, RTC_CRL)
在这里插入图片描述
在这里插入图片描述
①修改CRH/CRL寄存器,必须先判断RSF位,确定已经与APB1同步。
②修改CNT,ALR,PRL的时候,必须先配置CNF位进入配置模式,修改完之后,设置CNF位为0退出配置模式

③同时在对RTC相关寄存器写操作之前,必须判断上一次写操作已经结束,也就是判断RTOFF位是否置位。

RTC预分频装载寄存器 (RTC_PRLH, RTC_PRLL)
在这里插入图片描述

RTC预分频余数寄存器 (RTC_DIVH, RTC_DIVL)
在这里插入图片描述
RTC计数器寄存器 (RTC_CNTH, RTC_CNTL)
在这里插入图片描述
RTC闹钟寄存器 (RTC_ALRH ,RTC_ALRL)
在这里插入图片描述

配置流程

第一次配置
//代码就不贴啦

  1. 使能RCC时钟(电源,后备区域)
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);	//使能PWR和BKP外设时钟   
	
  1. 获得后备区访问权限
PWR_BackupAccessCmd(ENABLE);	//使能后备寄存器访问  
  1. 设置RTC时钟源
u8 temp=0;

	if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050)		//从指定的后备寄存器中读出数据:读出了与写入的指定数据不相乎
		{
   	 			
		BKP_DeInit();	//复位备份区域 	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值