初出茅庐的小李博客之RTC时间设置

news2024/11/13 15:02:33

串口上位机设置RTC时间进行校准

方式1:发送固定格式时间解析

代码:

#include <stdio.h>
#include <string.h>
/*
当在格式字符串中使用 `%*[^:]` 时,它表示在读取输入时跳过冒号 `:` 之前的任何字符。
%*:星号 * 表示读取输入但不将其存储到变量中,而是跳过该部分的内容。
[^:]:方括号 []表示一个字符集,其中 ^ 表示取反。在这个字符集中,我们指定了一个冒号 : 以外的任何字符。
因此,%*[^:] 表示在读取输入时跳过冒号 : 之前的任何字符。这在上述示例中用于跳过字符串中的 "Set Time:" 部分,以便我们只提取日期和时间部分。
这种格式说明符的使用非常方便,可以帮助我们在读取输入时忽略或跳过特定的字符或字符串部分,而不必将其存储到变量中。
*/
int main(void) 
{
    char input[100];  // 假设输入的字符串不超过 100 个字符
    int Year, Month, Day, Hour, Minute, Second;
    
    printf("请输入时间字符串要求样例如下:\r\n");
    printf("Set Time:2023-06-18 23:25:36 \r\n");
    fgets(input, sizeof(input), stdin);
    // 从输入的字符串中提取年、月、日、小时、分钟和秒
    sscanf(input, "%*[^:]:%d-%d-%d %d:%d:%d", &Year, &Month, &Day, &Hour, &Minute, &Second);
  
    printf("Year:   %d\n", Year);
    printf("Month:  %d\n", Month);
    printf("Day:    %d\n", Day);
    printf("Hour:   %d\n", Hour);
    printf("Minute: %d\n", Minute);
    printf("Second: %d\n", Second);
    
    return 0;
}

方式1:测试效果

在这里插入图片描述

方式2:发送设置时间的时间戳

代码:

#include <stdio.h>
#include <string.h>
#include <time.h>
/*时间戳是从特定时间点(例如UNIX纪元时间)开始计算的秒数。时间戳的值通常是一个长整型(long)数值。*/
int main(void) 
{
    char input[100];  // 假设输入的字符串不超过 100 个字符
    int Year, Month, Day, Hour, Minute, Second;
    time_t timestamp;
    printf("请输入时间戳要求样例如下:\r\n");
    printf("Set Time:%ld\r\n",(time_t)time(NULL));
    fgets(input, sizeof(input), stdin);
    // 将时间戳转换为 time_t 类型
    sscanf(input, "Set Time:%ld", &timestamp);
    // 将 time_t 类型的时间戳转换为 struct tm 结构体
    struct tm* timeinfo = localtime(&timestamp);
	Year   = timeinfo->tm_year + 1900;
	Month  = timeinfo->tm_mon  + 1;
    Day    = timeinfo->tm_mday;
    Hour   = timeinfo->tm_hour;
    Minute = timeinfo->tm_min;
    Second = timeinfo->tm_sec;

    printf("Year:   %d\n", Year);
    printf("Month:  %d\n", Month);
    printf("Day:    %d\n", Day);
    printf("Hour:   %d\n", Hour);
    printf("Minute: %d\n", Minute);
    printf("Second: %d\n", Second);
    
    return 0;
}

方式2:测试效果

在这里插入图片描述

有关时间戳的概念大家可以参考之前文章

https://blog.csdn.net/weixin_43176183/article/details/131191018

代码仅仅在Dev平台上测试,具体设置还要在硬件上进行验证!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DeepMind发布多任务机器人RoboCat;沧海拾珍之LLM、GPT

&#x1f989; AI新闻 &#x1f680; DeepMind发布多任务机器人控制AI模型RoboCat 摘要&#xff1a;谷歌旗下DeepMind发布了名为RoboCat的AI模型&#xff0c;该模型可以控制不同机器人手臂执行多项任务。RoboCat是第一个能够解决和适应多种任务的模型&#xff0c;并且使用真实…

过滤器-filter

1 Servlet规范中的过滤器-Filter 1.1 过滤器入门 1.1.1 过滤器概念及作用 过滤器——Filter&#xff0c;它是JavaWeb三大组件之一。另外两个是Servlet和Listener。 它是在2000年发布的Servlet2.3规范中加入的一个接口。是Servlet规范中非常实用的技术。 它可以对web应用中…

CSS3新增了哪些新特性?

一、是什么 css&#xff0c;即层叠样式表&#xff08;Cascading Style Sheets&#xff09;的简称&#xff0c;是一种标记语言&#xff0c;由浏览器解释执行用来使页面变得更美观 css3是css的最新标准&#xff0c;是向后兼容的&#xff0c;CSS1/2的特性在CSS3 里都是可以使用的…

最优化方法(基于lingo)之 求解线性规划问题(1/6)

一、实验目的&#xff1a; 1. 会建立合理的规划模型&#xff1b; 2. 学习掌握Matlab中求解线性规划的命令&#xff1b; [x,fval]linprog(f,A,b); [x,fval]linprog(f,A,b,Aeq,beq); [x,fval]linprog(f,A,b,Aeq,beq,lb;ub); 3. 要求学生能在计算机上应用各种优化软件包熟练地操作…

音视频流媒体开发工作机会占80%的市场份额

音视频流媒体开发领域的工作机会在过去几年中确实呈现出了快速增长的趋势。随着互联网的普及和网络带宽的提高&#xff0c;人们对音视频内容的需求也越来越大&#xff0c;这导致了许多公司和组织寻求音视频流媒体开发人员来满足市场需求。 音视频流媒体开发工作的主要流程可以概…

对MVVM和MVC开发模式的理解

对MVVM和MVC开发模式的理解 1、MVVM2、MVC3、MVVM与MVC的区别 1、MVVM MVVM最早由微软提出来&#xff0c;它借鉴了桌面应用程序的MVC思想&#xff0c;在前端页面中&#xff0c;把Model用纯JavaScript对象表示&#xff0c;View负责显示&#xff0c;两者做到了最大限度的分离&am…

基于 SpringBoot 2.X 框架的智能制造云办公系统,已开源

简介 基于SpringBoot 2.X框架的智能制造云办公系统&#xff0c;立志打造ERP生产功能的软件&#xff0c;专注进销存财务功能生产管理&#xff0c;适合各行业。主要完成从下单->进货->生产->出库的过程&#xff0c;涉及到领料&#xff0c;出入库&#xff0c;工序&#…

Kotlin Multiplatform项目探索之KMChat

Kotlin Multiplatform项目探索之KMChat 这是当前在 Kotlin Multiplatform 官方文档中提议的用例结构。Kotlin Multiplatform 中包含的许多子组件已经发布了稳定版本&#xff0c;即使目前不稳定的组件也在迅速更新。 本文中的演示项目包括 Compose Multiplatform - Web (Experi…

【微服务架构设计和实现】4.9 微服务测试和部署最佳实践

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【基于容器的部署、管理和扩展】 第四章&#xff1a;【4.1 微服务架构概述和设计原则】 第四章&#xff1a;【4.2 服务边界的定义和划分…

STM32单片机(六)TIM定时器 -> 第二节:TIM定时中断练习2(定时器外部时钟)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

如何看待社交媒体的时间管理和沉迷问题?

在当今数字化时代&#xff0c;社交媒体已经成为了人们生活中不可或缺的一部分。然而&#xff0c;社交媒体的普及也带来了一个问题&#xff1a;时间管理和沉迷。本文将从多个角度对社交媒体的时间管理和沉迷问题进行分析&#xff0c;并探讨如何合理利用社交媒体并避免沉迷。 第…

【计算机视觉】DINO

paper&#xff1a;Emerging Properties in Self-Supervised Vision Transformers 源码&#xff1a;https://github.com/facebookresearch/dino 20230627周二目前只把第一部分看完了。 论文导读&#xff1a;DINO -自监督视觉Transformers - deephub的文章 - 知乎、 DINO原理…

C生万物 | 细说动态内存管理【附经典笔试题】

文章目录 一、为什么存在动态内存分配二、动态内存函数的介绍1、malloc和free2、calloc3、reallocrealloc扩容机制&#xff1a;【本地扩容】和【异地扩容】实际应用&#xff1a;数据结构之【顺序表】与【顺序栈】 三、常见的动态内存错误1、对NULL指针的解引用操作2、对动态开辟…

Redisson源码-多线程之首个获取锁的线程加解锁流程

Redisson源码-多线程之首个获取锁的线程加解锁流程 简介 当有多个线程同时去获取同一把锁时&#xff0c;第一个获取到锁的线程会进行加解锁&#xff0c;其他线程需订阅消息并等待锁释放。 以下源码分析基于redisson-3.17.6版本&#xff0c;不同版本源码会有些许不同需注意。 …

数据结构--单链表的插入删除

数据结构–单链表的插入&删除 目标 单链表的插入&#xff08;位插、前插、后插&#xff09; 单链表的删除 单链表的插入 按为序插入(带头结点) ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。 思路&#xff1a;找到第i-1个结点,将新结点插入其…

软件工程期末报告(登录注册部分)

云小智微校园工具系统的设计与实现成员1注册模块 第一章 绪论 系统的背景描述和概述&#xff1a;可以描述系统服务的对象是学生,满足他们查询课程安排和上课时间的需求。目前市场上确实存在这方面的需求,这款app可以方便学生管理课程。系统采用客户端-服务器架构,运行在安卓平…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第十章 公钥基础设施-PKI)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、PKI概述1、理论基础2、PKI提供的安全服务 二、数字证书1、数字证书的格式2、数字证书的生命周期3、用JAVA工具生成数字证书 三、PKI组成四、PKI功能五、信任模型六、相关…

基于 Redis 手写一个“秒杀”

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…

Git分布式版本控制工具 —— 详细笔记

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

现代操作系统(中)

第三章 内存管理 概述 内存&#xff08;RAM&#xff09;是计算机中一种需要认真管理的重要资源。 经过多年探索&#xff0c;人们提出了分层存储器体系&#xff08;memory hierarchy&#xff09;的概念&#xff0c;即在这个体系中&#xff0c;计算机有若干兆&#xff08;MB&a…