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接口)