0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RTC+硬件时钟分析STM32L4

冬至子 来源:魂断冥殇 作者:魂断冥殇 2023-11-28 17:10 次阅读

一、先从结构体看起

struct tm
{
int tm_sec; /* 秒 – 取值区间为[0,59] /
int tm_min; /
分 - 取值区间为[0,59] /
int tm_hour; /
时 - 取值区间为[0,23] /
int tm_mday; /
一个月中的日期 - 取值区间为[1,31] /
int tm_mon; /
月份(从一月开始,0代表一月) - 取值区间为[0,11] /
int tm_year; /
年份,其值等于实际年份减去1900 /
int tm_wday; /
星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 /
int tm_yday; /
从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 /
int tm_isdst; /
夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况 时,tm_isdst()为负。*/
};
月份为0-11
年份又是从1900年开始
星期又是0~6
time_t
time_t却是从1970/1/1 000开始的秒数

二、再从重点转换函数看起

timegm()和gmtime_r()

timegm()是将struct tm结构体转换为time_t,直接时间计算
gmtime_r()是将time_t转换为struct tm结构体数据
mktime()和localtime_r()
mktime先调用timegm()转换为time_t,再减去时区
localtime_r()先加上时区值,再调用gmtime_r()转换为结构体

三、再谈time格式化字符:

ctime(),ctime_r(),asctime()最终都是调用asctime_r()

四、再从底层驱动看起,

1.实际的硬件时间:

-# 实际年份-1900年-100的年份 = 实际年份-2000年,
-# 其他时间为本地时分秒

相当于本地时间:2023/11/23 19:03:00 实际存储到硬件为23/11/23 19:03:00

在网上搜到一篇文章,就说的windows和linux系统硬件存储的实际时间也是本地时间

五、硬件时间转换与timestamp相互转换

在get_rtc_timestamp中mktime()将底层硬件时间(带时区)转换为相对1970/1/1 000的秒数(不带时区),

重点:mktime()将struct tm * t结构时间减去时区值

在set_rtc_time_stamp中localtime()将相对1970/0/0 000的秒数(不带时区)转换为struct tm结构体数据(带时区)

六、time()和stime函数

time()调用_control_rtc()→最终调用get_rtc_timestamp()
stime函数调用_control_rtc()→最终调用set_rtc_timestamp()

总结:

底层硬件时间与tm结构体时间都是有区别,各处应使用tm结构体时间(应为1900年到现在的时间)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    593

    浏览量

    27397
  • RTC
    RTC
    +关注

    关注

    2

    文章

    538

    浏览量

    66529
  • STM32L4
    +关注

    关注

    1

    文章

    42

    浏览量

    9413
收藏 人收藏

    评论

    相关推荐

    STM32L4时钟树概述

    1. STM32L4 时钟树概述时钟系统是 CPU 的脉搏,就像人的心跳一样。STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统
    发表于 08-10 06:40

    STM32L4系列一、时钟系统简介 精选资料分享

    跟着原子哥学习,顺便写点笔记~主要内容1)STM32L4 时钟树概述;2)STM32L4 时钟初始化配置;3)STM32L4
    发表于 08-12 06:10

    STM32L4 RTC内部唤醒周期性中断设置方法有哪些

    STM32的实时时钟RTC模块有何功能?如何对STM32L4 RTC时钟源进行配置?
    发表于 02-28 09:13

    STM32L4循环冗余校验模块(CRC)介绍

    STM32L4循环冗余校验模块(CRC)介绍 有兴趣的可以参考下
    发表于 12-25 10:38 27次下载

    STM32L4系列一、时钟系统简介

    跟着原子哥学习,顺便写点笔记~主要内容1)STM32L4 时钟树概述;2)STM32L4 时钟初始化配置;3)STM32L4
    发表于 11-21 18:36 21次下载
    <b class='flag-5'>STM32L4</b>系列一、<b class='flag-5'>时钟</b>系统简介

    AN4726_适用于STM32L4STM32L4plus系列的STM32Cube固件例程

    AN4726_适用于STM32L4STM32L4plus系列的STM32Cube固件例程
    发表于 11-21 17:06 9次下载
    AN4726_适用于<b class='flag-5'>STM32L4</b>和<b class='flag-5'>STM32L4</b>plus系列的<b class='flag-5'>STM32</b>Cube固件例程

    AN4729_STM32L0和STM32L4防火墙概述

    AN4729_STM32L0和STM32L4防火墙概述
    发表于 11-21 17:06 0次下载
    AN4729_<b class='flag-5'>STM32L</b>0和<b class='flag-5'>STM32L4</b>防火墙概述

    AN4629_STM32L0和STM32L4系列MCU的ADC硬件过采样应用

    AN4629_STM32L0和STM32L4系列MCU的ADC硬件过采样应用
    发表于 11-21 17:06 12次下载
    AN4629_<b class='flag-5'>STM32L</b>0和<b class='flag-5'>STM32L4</b>系列MCU的ADC<b class='flag-5'>硬件</b>过采样应用

    AN4612_STM32L1与STM32L4STM32L4plus微控制器之间的移植

    AN4612_STM32L1与STM32L4STM32L4plus微控制器之间的移植
    发表于 11-21 17:06 2次下载
    AN4612_<b class='flag-5'>STM32L</b>1与<b class='flag-5'>STM32L4</b>和<b class='flag-5'>STM32L4</b>plus微控制器之间的移植

    AN4649_从STM32F1到STM32L4/STM32L4plus的软件移植

    AN4649_从STM32F1到STM32L4/STM32L4plus的软件移植
    发表于 11-21 17:06 1次下载
    AN4649_从<b class='flag-5'>STM32</b>F1到<b class='flag-5'>STM32L4</b>/<b class='flag-5'>STM32L4</b>plus的软件移植

    STM32 F0、F2、F3、F4L1系列MCU中使用硬件实时时钟RTC

    STM32 F0、F2、F3、F4L1系列MCU中使用硬件实时时钟RTC
    发表于 11-21 17:07 2次下载
    在<b class='flag-5'>STM32</b> F0、F2、F3、F<b class='flag-5'>4</b>和<b class='flag-5'>L</b>1系列MCU中使用<b class='flag-5'>硬件</b>实时<b class='flag-5'>时钟</b>(<b class='flag-5'>RTC</b>)

    UM1860_基于STM32L4STM32L4+ 系列的STM32CubeL4软件库使用入门

    UM1860_基于STM32L4STM32L4+ 系列的STM32CubeL4软件库使用入门
    发表于 11-22 19:13 5次下载
    UM1860_基于<b class='flag-5'>STM32L4</b> 和 <b class='flag-5'>STM32L4</b>+ 系列的<b class='flag-5'>STM32CubeL4</b>软件库使用入门

    PM0214_STM32F3,STM32F4,STM32L4STM32L4plus单片机编程手册

    PM0214_STM32F3,STM32F4,STM32L4STM32L4plus单片机编程手册
    发表于 11-24 08:30 22次下载
    PM0214_<b class='flag-5'>STM32</b>F3,<b class='flag-5'>STM32F4</b>,<b class='flag-5'>STM32L4</b>和<b class='flag-5'>STM32L4</b>plus单片机编程手册

    STM32L4定时器(TIMER)介绍

    电子发烧友网站提供《STM32L4定时器(TIMER)介绍.pdf》资料免费下载
    发表于 08-01 14:24 0次下载
    <b class='flag-5'>STM32L4</b>定时器(TIMER)介绍

    STM32L4外部中断及事件控制模块(EXTI)

    电子发烧友网站提供《STM32L4外部中断及事件控制模块(EXTI).pdf》资料免费下载
    发表于 08-01 10:23 0次下载
    <b class='flag-5'>STM32L4</b>外部中断及事件控制模块(EXTI)