BKP&RTC(STM32学习笔记)

本文介绍了STM32F103C8T6单片机如何使用BKP进行数据备份以及配置RTC时钟源、预分频器和访问控制。重点讲解了如何初始化BKP和RTC,包括时钟配置、访问权限设置和数据操作注意事项。
摘要由CSDN通过智能技术生成

BKP简介

本节使用的STM32F103C8T6是中容量单片机,所以只能存储20字节的数据,共有10个DR数据寄存器,每个寄存器能存储两个字节的数据。


配置BKP基本结构 


初始化配置模板 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);
	
//使能对BKP和RTC的访问
PWR_BackupAccessCmd(ENABLE);//备份访问控制使能函数

上面的代码对应下面注意事项

要访问BKP,得先使能PWR和BKP的时钟,两者都是挂载在APB1上的设备

PWR_BackupAccessCmd(ENABLE);函数能使能对BKP和RTC的访问

接着使用BKP_WriteBackupRegisterBKP_ReadBackupRegister就能对BKP进行读写操作。


RTC简介

我们一般选择LSE作为RTC的时钟源,再经过分频器输出1Hz的信号给RTC的秒计数器 


配置RTC的基本结构

我们先使能LSE外部低速时钟,然后选择LSE作为RTC的时钟源,再配置RTC各个参数就可以了,本节不使用闹钟和中断的功能。(RTC的配置不像之前一样用结构体来配置,只需要选择外部时钟源,设置分频器的值就好了)


初始化配置模板 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);
	
PWR_BackupAccessCmd(ENABLE);
	
//开启LSE时钟,并等待LSE时钟启动完成
RCC_LSEConfig(RCC_LSE_ON);//32.768KHz
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)!=SET);//等待标志位为1
		
//选择RTC_CLK时钟源
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);//使能
		
//等待时钟同步
RTC_WaitForSynchro();
//等待上一次操作完成
RTC_WaitForLastTask();
		
//配置预分频器
RTC_SetPrescaler(32768-1);//输出1Hz的时钟源给秒计数器
RTC_WaitForLastTask();//在每次写入操作之后调用一次

RTC_SetCounter(x);
RTC_WaitForLastTask();

具体注意事项见下图

代码前三步和BKP初始化一样,使能对RTC的访问。

这里开启LSE时钟不像之前一样使用 RCC_APB1PeriphClockCmd 函数,而是RCC_LSEConfig(RCC_LSE_ON);接着还要判断LSE是否准备完成,用判断标志位的函数。

接着使用RCC_RTCCLKConfig选择RTC的时钟源,别忘了使能RTC。

注意事项里的第二点和第四点,用两个无参的函数就能完成。分别是RTC_WaitForSynchro();
RTC_WaitForLastTask();注意在每次写操作后都要调用第二个函数。

接着设置分频器的值,我们选择LSE作为时钟源,频率为32.768KHz,所以分频值选择32768。

秒计数器的值涉及到时间戳的知识点。

使用RTC_SetCounterRTC_GetCounter可以对秒计数器进行读写操作,想要将秒计数器里的值转换成想要的年月日时分秒,需要用到<time.h>库里的函数。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sakabu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值