MCU中的RTC

第1章 RTC的作用

配置好MCU的外设RTC,MCU就可以产生一个年月日-时分秒的时钟;

第2章 时间戳

时间戳的定义:是指从 1970 年 1 月 1 日0时0分0秒开始,所经过的秒数(不考虑闰秒);

通俗点讲就是,从1970 年 1 月 1 日0时0分0秒开始按下一个秒表,秒表开始计数。计数的数值就是时间戳。

时间戳和时间是可以相互转换的。

北京的时区是东八区(UTC+8),属于中国标准时间(CST)

伦敦的时区是零时区(UTC+0),但在夏令时期间会调整为西一区(UTC+1),称为英国夏令时(BST)。因此:

  • 北京是东八区,比伦敦快 8小时 (冬季)或 7小时(夏季)。

2.1 获取系统时间

cpp 复制代码
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time); // 获取当前时间,单位是秒

    printf("Current time in seconds since epoch: %ld\n", current_time); 
    return 0;
}

Current time in seconds since epoch: 1734007378

2.2 秒计数器转换为字符串

cpp 复制代码
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time);

    char *time_str = ctime(&current_time); // 转换为可读字符串
    printf("Current time: %s", time_str);
    return 0;
}

Current time: Thu Dec 12 20:47:23 2024

2.3 秒计数器转换为日期时间

cpp 复制代码
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time);

    struct tm *local_time = localtime(&current_time); // 转换为本地时间
    printf("Year: %d, Month: %d, Day: %d\n",
           local_time->tm_year + 1900,
           local_time->tm_mon + 1,
           local_time->tm_mday);
    return 0;
}

Year: 2024, Month: 12, Day: 12

2.4 日期时间转换为秒

cpp 复制代码
#include <stdio.h>
#include <time.h>

int main() {
    struct tm time_spec = {0};

    time_spec.tm_year = 2024 - 1900; // 年份从1900开始
    time_spec.tm_mon = 11;          // 12月(从0开始)
    time_spec.tm_mday = 31;
    time_spec.tm_hour = 23;
    time_spec.tm_min = 59;
    time_spec.tm_sec = 59;

    time_t specific_time = mktime(&time_spec);
    printf("Seconds since epoch: %ld\n", specific_time);
    return 0;
}

Seconds since epoch: 1735660799

2.5 日期时间转换为字符串

cpp 复制代码
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    struct tm *local_time;

    // 获取当前时间
    time(&current_time);

    // 转换为本地时间结构
    local_time = localtime(&current_time);

    // 使用 asctime 转换为字符串
    char *time_str = asctime(local_time);

    printf("Current local time: %s", time_str);

    return 0;
}

Current local time: Thu Dec 12 20:52:31 2024

第3章 RTC的详细描述

配置好RTC后,MUC就会产生一个日期时间。

stm32F4的RTC可以由LSE和LSI供给时钟频率

3.1 RTC的硬件结构

  • 分频器分频后的频率为1HZ,也就是1s。

3.2 RTC的时钟体系

  1. 使用LSE时钟(32.768KHZ)给RTC供给时钟频率;
  2. 通过128分频,得到的时钟频率为256HZ;
  3. 通过预分配器再进行256分频,得到1Hz;
  4. 经过多路选择器选择哪个时钟源;
  5. 配置自动重装载寄存器,决定定时时间,定时时间到产生一个中断标志位(时间唤醒中断标志位);
  6. 时间唤醒中断标志位;

3.3 RTC的电源供电

第4章 RTC驱动

相关推荐
电气_空空5 小时前
基于LabVIEW的数据采集系统设计与实现
单片机·嵌入式硬件·labview
caimouse5 小时前
ReactOS BootCD 光盘布局完整深度分析
单片机·reactos
zlinear数据采集卡6 小时前
从万用表的6步调零到硅片级微秒自校准:硬核拆解LHAMP188的宽压轨到轨与零漂移实战
arm开发·stm32·单片机·嵌入式硬件·fpga开发
三品吉他手会点灯7 小时前
嵌入式机器学习 - 学习笔记1.2.3 - 机器学习软件框架
人工智能·笔记·嵌入式硬件·学习·机器学习
国科安芯8 小时前
ASC8T245S 8通道电平转换设计实战:从系统架构到QFN24 Layout再到量产测试
网络·单片机·物联网·安全·fpga开发·系统架构
云栖梦泽8 小时前
将RAW打包成MIPI CSI2
linux·人工智能·嵌入式硬件
伟大的前程9 小时前
us级开定时器中断,单片机的开销大,改用轮询的方式
单片机·嵌入式硬件
ACP广源盛1392462567321 小时前
IX8024@ACP# 搭配此芯 AI 服务器 + 爱芯元智产品完整方案
大数据·运维·服务器·人工智能·分布式·嵌入式硬件
ShallWeL1 天前
NVIDIA Jetson 早期系列演进
人工智能·嵌入式硬件·边缘计算·智能硬件
2501_914245931 天前
C语言与硬件交互:从GPIO到中断的嵌入式编程实践
c语言·单片机·交互