单片机的RTC获取网络时间

03a9c7af8f5428145ca9b35ab4b7d73d.png

理解网络同步校准RTC的原理需要考虑NTP、SNTP、RTC这三个关键组件的作用和交互。下面详细解释这个过程:


1. NTP(Network Time Protocol):

协议目的:NTP是用于同步计算机和设备时钟的协议。它通过在网络上与时间服务器通信,获取准确的时间信息。

工作原理:NTP使用一种分层的客户端-服务器体系结构。客户端向服务器发起请求,服务器回应包含其本地时间的响应。NTP客户端使用这些响应来调整本地时钟。


2. SNTP(Simple Network Time Protocol):

轻量级版本:为了适应嵌入式系统和资源受限设备,SNTP是NTP的简化版本。它保留了核心的时间同步功能。

工作方式:SNTP客户端通过轮询或监听模式向NTP服务器发送请求。服务器响应包含当前时间。SNTP客户端使用这个时间信息来调整本地时钟。


3. RTC(Real-Time Clock):

硬件设备:RTC是一种硬件设备,通常嵌入在计算机或嵌入式系统中,用于跟踪时间。

时钟漂移:由于RTC的硬件特性,它的时钟可能会产生漂移,即时钟不会完美地保持准确。这就需要定期校准。


4. 示例中的步骤解释:

SNTP初始化:在初始化代码中,配置SNTP模块,包括指定NTP服务器地址和设置SNTP的操作模式。这告诉SNTP模块应该如何获取时间信息。
 
sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_setservername(0, NTP_SERVER);
sntp_init();
SNTP回调函数:注册一个回调函数,该函数在SNTP成功获取到时间时被调用。在这个回调函数中,将获取到的UNIX时间戳转换为RTC的时间格式,并更RTC。
 
void sntp_callback(struct timeval *tv) {
// Callback function called when SNTP obtains time from the serverRTC_TimeTypeDef sTime;RTC_DateTypeDef sDate;// Convert UNIX timestamp to RTC structuresstruct tm *timeinfo = localtime((const time_t*)&tv->tv_sec);sTime.Hours = timeinfo->tm_hour;sTime.Minutes = timeinfo->tm_min;sTime.Seconds = timeinfo->tm_sec;sDate.WeekDay = timeinfo->tm_wday;sDate.Month = timeinfo->tm_mon + 1;  // tm_mon is 0-indexedsDate.Date = timeinfo->tm_mday;sDate.Year = timeinfo->tm_year + 1900;  // tm_year is years since 1900// Update RTC with obtained timeHAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
}
等待同步:在主循环中,等待SNTP成功获取时间。这确保在主代码开始执行之前,RTC已经校准。
 
while (!sntp_get_sync_status()) 
{HAL_Delay(100);
}
主循环:在主循环中,你可以执行其他与应用相关的任务。此时,RTC已经被成功校准。
 
while (1) {// Your main code here
}


5. 注意事项:

定期同步:SNTP模块会定期向NTP服务器发起请求,以保持本地时钟的准确性。

NTP服务器选择: 在实际应用中,应该选择可靠性高且准确性好的NTP服务器。这可能需要在特定的网络环境中选择合适的服务器。

==========

往期回顾:

我都不知道的PWM的很偏的问题

一个小细节,精度提供一大截

蓝桥杯物联网教程汇总

最近发生了很多事情,聊聊心里话

IIC面试问题汇总

==========

1584b3ed234f64a7782a7645faab840a.png

86406a357199d701b0e872fb14d3ded7.png

d0878de1407ccc1ca4cc7efd86d83739.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/224828.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于包围盒算法的三维点云数据压缩和曲面重建matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 包围盒构建 4.2 点云压缩 4.3 曲面重建 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................…

多维时序 | MATLAB实CNN-Mutilhead-Attention卷积神经网络融合多头注意力机制多变量时间序列预测

多维时序 | MATLAB实CNN-Mutilhead-Attention卷积神经网络融合多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实CNN-Mutilhead-Attention卷积神经网络融合多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | …

LeetCode刷题--- 优美的排列

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​​​http://t.cs…

TrustZone之与非安全虚拟化交互

到目前为止,我们在示例中忽略了非安全状态中可能存在的虚拟化程序。当存在虚拟化程序时,虚拟机与安全状态之间的许多通信将通过虚拟化程序进行。 例如,在虚拟化环境中,SMC用于访问固件功能和可信服务。固件功能包括诸如电源管理之…

关于“Python”的核心知识点整理大全43

目录 ​编辑 15.2.3 使2散点图并设置其样式 scatter_squares.py 15.2.4 使用 scatter()绘制一系列点 scatter_squares.py 15.2.5 自动计算数据 scatter_squares.py 15.2.6 删除数据点的轮廓 15.2.7 自定义颜色 15.2.8 使用颜色映射 scatter_squares.py 注意 15.2.9…

【微服务面试题(三十三道)】

文章目录 微服务面试题(三十三道)概述1.什么是微服务?2.微服务带来了哪些挑战?3.现在有哪些流行的微服务解决方案?这三种方案有什么区别吗? 4.说下微服务有哪些组件? 注册中心5.注册中心是用来干…

网络编程套接字socket

哈哈哈,之前的保存成草稿忘了发 目录 一 . 先回顾一下网络初始中的相关概念: 1.网络通信: 2.局域网: 3.广域网: 4.IP地址: 5.端口: 概念 格式 6.协议: 7.五元组: 8.分层…

【cesium-4】cesium空间数据加载与管理

目录 一、cesium空间数据加载 1、cesium画线 2、cesium绘制矩形 3、cesium绘制平面 4、飞机模型加载 5、标签加载 6、cesium绘制多边形 二、cesium空间数据管理 一、cesium空间数据加载 空间数据包括: 矢量数据:几何体、模型、标签等&#xff…

如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务

文章目录 1.测试环境2.本地配置2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道3. 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名5. 使用固定二级子域名进行访问 1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,…

单片机第三季-第七课:STM32中断体系

目录 1,NVIC 2,中断和事件的区别 3,优先级的概念 4,如何实际编程使用外部中断 5,STM32开发板通过按键控制LED 5.1,打开相应GPIO模块时钟 5.2,NVIC设置 5.3,外部中断线和配套…

【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 失真 - 信号的变化 影响信号失真的因素: ​编辑 失真的一种现象:码间…

udp多播/组播那些事

多播与组播 多播(multicast)和组播(groupcast)是相同的概念,用于描述在网络中一对多的通信方式。在网络通信中,单播(unicast)是一对一的通信方式,广播(broad…

Azure Machine Learning - Azure OpenAI GPT 3.5 Turbo 微调教程

本教程将引导你在Azure平台完成对 gpt-35-turbo-0613 模型的微调。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师&…

使用travelbook架设自己的实时位置共享服务

travelbook 是一款开源的安卓APP,它能以低功耗提供实时位置共享,它包含功能如下: 好友之间分享实时位置;记录行程轨迹;标记收藏地点; 这款软件的主要解决的问题包括: 场景1:查看老…

云原生系列3-Kubernetes

1、Kubernetes概述 k8s缩写是因为k和s之间有八个字符。k8s是基于容器技术的分布式架构方案。官网:https://kubernetes.io/zh-cn/ Google在 2014年开源了Kubernetes项目,Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。同样类似的…

智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.原子轨道搜索算法4.实验参数设定…

uniapp在中app,登录页能记住多个账号以及密码功能完整代码

如图所示&#x1f447;&#xff1a; 1.可以选择下拉&#xff0c;选取曾经登录成功的账户&#x1f447; 2.选择好下拉后自动赋值&#xff0c;账号密码。 3.勾选记住我则记住该账户以及密码 4.选择下拉后&#xff0c;点选删除账户&#xff0c;则删除 <template><view…

【数据结构和算法】找到最高海拔

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…

设计模式 建造者模式 与 Spring Bean建造者 BeanDefinitionBuilder 源码与应用

建造者模式 定义: 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示主要作用: 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象如何使用: 用户只需要给出指定复杂对象的类型和内容, 建造者模式负责按顺序创建复杂对象…

ZooKeeper Client API 安装及使用指北

下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz解压 tar -zxf zookeeper-3.5.4-beta.tar.gz安装 cd zookeeper-3.5.4-beta/src/c/ ./configure make sudo make install到 make 这一步大概率会出现报错&#xff1a;…