RTC实时时钟

时间戳

时间戳是一个计数器数值,定义从1970/1/1为0并开始计时,永不进位,在计算机底层用时间戳,需要观看时就是转化为年月日的格式(计算机使用时间戳的好处有简化硬件电路、时间间隔计算方便、存储方便)

时间戳以伦敦时间为基准,在不同的地区只需在时间基准加上偏移量即可

时间戳转化用C语言提供的time函数实现

UTC/GMT

GMT是以前计时标准,不同时区加上小时偏移,这样时间就定下来了,但GMT有个棘手的问题就是,地球自转一周的时间是不固定的(如潮汐力)所以这样的时间基准就是不断正在变化的,这样就导致计时不准,所以推出了UTC计时系统

UTC的时间基准固定,加入闰秒的机制来消除来消除计时一天和地球自转一周的误差

闰秒的操作流程就是,当原子钟计时一天的时间和地球自转一周的时间相差超过0.9秒时、、、、简而言之就是,当地球自转过慢,误差超过0.9秒,计时系统就多走1秒,来等下地球自转(一分钟61秒)

时间戳转换

time_t是typedef重命名的int64类型(有符号)

struct tm是结构类型名

注:

time函数不能在STM32中获取当前时钟(stm32是离线的)

年份要加上1900偏移,月份要加上1偏移

maketime参数必须是当地时间

BKP备用寄存器

如果要使用BKP/RTC,则必须给VBAT接备用电池(BKP本质是RAM存储器),TAMPER用于防拆设计,引脚街上拉或下拉连接到设备外壳,一旦外壳被拆开,TEMPER进入中断执行操作

橙色区域为备份区域,当主电源掉电时,备份区域仍由VBAT备用电池供电,当主电源上电时,由VDD供电

RTC

简介

RTC的时钟源为外部低速时钟(LSE 32.768Khz)

左边是分频、计数部分;右边是中断输出使能、NVIC部分

RTC的闹钟可以唤醒设备,退出待机模式

灰色填充部分都处于后备区域(主电源掉电后,使用备用电池维持供电)

分频器实际就是计数器,计几个数分频就是几分频,然后可编程分频器一般有两个寄存器,一个用来计数,一个用来写重装值(实际分频=重装值+1)

比如时钟是32768hz,那么计数32768时,就输出一个信号(1Hz)

当RTC_CNT=RTC_ALR时,会产生一个闹钟中断输出,通往中断系统,然后执行操作,同时闹钟还可以让STM32退出待机模式

注:这个闹钟值,是一个定值,只能响一次,如果想周期性响,则需要重新设置一下

RTC_Second每秒进入一次中断

RTC_Overflow计数器溢出进入中断

REC_Alarm闹钟中断,当计数器和闹钟值相等时,触发中断,同时可以从待机模式中唤醒设备

基本结构

配置数据选择器进行选择时钟源

配置重装寄存器选择分频系数

配置32位计数器进行日期的读写

外部电路

如要自己画板子,用推荐连接的方法

注意事项

如果要使用BKP或RTC都要执行两步(第一步,开启PWR和BKP的时钟;第二步,使用PWR,是能BKP和RTC的访问)

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值