一篇文章看懂STM32-实时时钟RTC&BKP备份寄存器(附上练习小项目详细注释)

1.Unix时间戳

1)简介

  • Uniⅸ时间戳(UniⅸTimestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒

  • 时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量

  • 世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间

2)UTC/GMT介绍

  • GMT(Greenwich Mean Time)格林尼治标准时间是一种以地球自转为基础的时间计量系统。它将地球自转一周的时间间隔等分为24小时,以此确定计时标准

  • UTC(Universal Time Coordinated)协调世界时是一种以原子钟为基础的时间计量系统。它规定铯133原子基态的两个超精细能级间在零磁场下跃迁辐射9,192,631,770周所持续的时间为1秒。当原子钟计时一天的时间与地球自转一周的时间相差超过0.9秒时,UTC会执行闰秒来保证其计时与地球自转的协调一致

3)时间戳转换

2.BKP介绍

1)简介

  • BKP(Backup Registers)备份寄存器

  • BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位

  • TAMPER引脚产生的侵入事件将所有备份寄存器内容清除

  • RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲

  • 存储RTC时钟校准寄存器

  • 用户数据存储容量:20字节(中容量和小容量)/84字节(大容量和互联型)

2)基本结构

3)BKP库函数介绍

//恢复缺省配置,手动清空BKP所有的数据寄存器
void BKP_DeInit(void);
//配置Tamper引脚的有效电平
void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel);
//是否开启侵入检测功能
void BKP_TamperPinCmd(FunctionalState NewState);
//中断配置
void BKP_ITConfig(FunctionalState NewState);
//配置时钟输出功能
void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource);
//设置RTC校准值
void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue);
//写备份寄存器
void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);
//读备份寄存器
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);
//备份寄存器访问使能
void PWR_BackupAccessCmd(FunctionalState NewState);

3.RTC介绍

1)简介

  • RTC(Real Time Clock)I实时时钟

  • RTC是一个独立的定时器,可为系统提供时钟和日历的功能

  • RTC和时钟配置系统处于后备区域,系统复位时数据不清零,VDD(2.0~3.6V)断电后可借助VBAT(1.8~3.6V)供电继续走时

  • 32位的可编程计数器,可对应Uniⅸ时间戳的秒计数器

  • 20位的可编程预分频器,可适配不同频率的输入时钟

  • 可选择三种RTC时钟源:

    • (高速外部时钟信号)HSE时钟除以128(通常为8MHz/128)(主要作为系统时钟)

    • (低速外部时钟信号)LSE振荡器时钟(通常为32.768KHz)(主要用于RTC时钟,可由VBAT供电)

    • (低速内部时钟信号)LSI振荡器时钟(40KHz)(主要作为看门狗时钟)

2)RTC框图

RTC由两个主要部分组成:第一部分(APB1接口)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值