GD 32 UNIX时间戳

前言


 ...


UINX时间戳定义

UNIX时间戳是一种表示时间的方法,广泛用于计算机系统和网络协议中。它定义的时间起点是1970年1月1日午夜(协调世界时UTC),也就是所谓的“UNIX纪元”开始的时刻。

Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数不考虑闰秒,时间戳是一个计数器数值,从1970年1月1日0时0分0秒开始,到现在总共所经过的秒数,时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量,世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间。


UTC与GMT

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

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


时间戳与日历时间转换

在C语言提供的标准库中,time时间模块(time.h),提供了日历时间和时间戳转换的相关函数,在不使用操作系统的逻辑程序中常使用UNIX时间戳实现系统的计时,时间校准等功能,其中需要对获取到的时间做时区和格式的转换。

C语言提供有关时间戳转换的相关函数:

C语言库函数文件中定义好的有关时间戳的格式

部分转换示例函数:


RTC实时时钟

实时时钟 RTC 通常用于日历时钟。 RTC 电路分属于两个电源域。 一部分位于备份域中,该部分包括一个 32 位的累加计数器、一个闹钟、一个预分频器、一个分频器以及 RTC 时钟配置寄存器。这表明系统复位或者从待机模式唤醒时, RTC 的设置和时间都保持不变。另一部分位于VDD 电源域中,该部分只包括 APB 接口以及一组控制寄存器。


RTC 基本硬件结构:

以上包含三个外部时钟,一个是外部高速时钟,一个是外部低速时钟,一个是内部低速时钟,经过RTCCLK实时时钟时候,选择是否对时钟的频率进行分频,包含一个预分频器,分频器对频率进行分频,提供三个中断,分别是秒中断,溢出中断(溢出中断由CNT计数器计数溢出后产生,CNT最大的计数范围是65535个),提供32位闹钟ALRM为系统提供闹钟中断,最后经中断输出控制,进入NVIC(嵌套中断向量控制器,配置通道通道中断优先级,开启中断)。


RTC 基本硬件结构

以上是STM32RTC硬件结构程序框图与GD32大致相同。


RTC 主要特征

 32位可编程计数器,用于计数运行时间

可编程的预分频器: 分频系数最高可达 220

 独立时钟域:

A) PCLK1 时钟域

B) RTC 时钟域(该时钟必须比 PCLK1 时钟至少慢 4 倍)

 RTC 时钟源:

A) HXTAL 时钟除以 128

B) LXTAL 振荡电路时钟

C) IRC40K 振荡电路时钟

 可屏蔽的中断源:

A) 闹钟中断

B) 秒中断

C) 溢出中断


RTC 时钟源

在GD32这款MCU中RTC(实时时钟)一共有三个时钟源分别如下所示:

(A) HXTAL  时钟除以 128

(B) LXTAL   振荡电路时钟

(C) IRC40K 振荡电路时钟


BKP 备份寄存器

备份寄存器可在 VDD 电源关闭时由 VBAT 供电,备份寄存器有 42 个16 位(84字节)寄存器可用来存储并保护用户应用数据,从待机模式唤醒或系统复位也不会对这些寄存器造成影响。

此外,BKP 寄存器也可实现侵入检测和 RTC 校准功能。


在复位之后,任何对备份域寄存器的写操作都将被禁止,也就是说,备份寄存器和 RTC 不允许写访问。为使能对备份寄存器和 RTC的写访问,首先通过设置 RCU APB1EN 寄存器的PMUEN 和 BKPIEN 位来打开电源和备份接口时钟,然后再通过设置 PMU CTL 寄存器的BKPWEN 位来使能对备份域中寄存器的写访问。


RTC 复位

APB 接口和 RTC_INTEN 寄存器会随着系统复位进行复位。 RTC 内核(预分频器、分频器、计数器以及闹钟)只会随备份域复位进行复位。通过下面的步骤,可以在复位后访问备份域寄存器以及 RTC 寄存器:

1.通过对 RCU_APB1EN 寄存器中的 PMUEN 和 BKPEN 位进行置位,使能电源以及备份接口时钟。

2.通过对 PMU_CTL 中的 BKPWEN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值