Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RTC
硬件RTC驱动
时区
RTC+硬件时钟分析STM32L4
发布于 2023-11-24 14:12:38 浏览:545
订阅该版
[tocm] ## 一、先从结构体看起 ```c 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 0:0:0开始的秒数 ## 二、再从重点转换函数看起 `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相互转换 1. 在get_rtc_timestamp中mktime()将底层硬件时间(带时区)转换为相对1970/1/1 0:0:0的秒数(不带时区), - 重点:mktime()将struct tm * t结构时间减去时区值 2. 在`set_rtc_time_stamp`中`localtime()`将相对`1970/0/0 0:0:0`的秒数(不带时区)转换为`struct tm`结构体数据(带时区) ## 六、time()和stime函数 1. time()调用`_control_rtc()`→最终调用`get_rtc_timestamp()` 2. stime函数调用`_control_rtc()`→最终调用`set_rtc_timestamp()` ## 总结: 底层硬件时间与tm结构体时间都是有区别,各处应使用tm结构体时间(应为1900年到现在的时间)
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
魂断冥殇
这家伙很懒,什么也没写!
文章
1
回答
1
被采纳
0
关注TA
发私信
相关文章
1
RTC驱动框架几点建议
2
求助:RTT在STM32F407上使用内置的RTC设置日期需重启生效,设置时间即时生效,有遇到同样问题的吗?
3
[新人试水] LPC1768 Nano3_9 添加RTC
4
STM32 关于RTC的问题
5
stm32f4xx-HAL BSP的RTC设置不对
6
关于STM32的RTC设置年份不正确的问题
7
RTT的RTC驱动调试
8
rtc驱动中的bkp模块起不到防止时间的重新设置
9
rtc时钟跑十几个小时后,比实际时间快几秒怎么解决
10
stm32如何断电之后开发板rtc时间继续往前跑
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部