C++操作树莓派的RTC时钟

概述

RTC实时时钟通常是指一个集成电路,RTC本质上是一个独立的定时器,通常情况下需要外接一个32.768KHZ的晶振和匹配电容(10~33pf),由于时间是不停止的,为了满足这一要求,所以RTC实时时钟有两种供电方式:

1)在设备正常运行的时候,RTC实时时钟模块是由MCU主电源进行供电。

2)在主电源停止供电的时候,RTC实时时钟由备份电源(纽扣电池)来进行供电,保证当MCU停止供电的情况下,RTC不受影响,保持正常工作。

核心代码

time_t GetTime(void) {
      union {
              struct rtc_time rtc;
        struct tm tm;
      } tm;
            int ret = ioctl(fd, RTC_RD_TIME, &tm.rtc);
            if (ret < 0) {
                throw std::system_error(errno,
            std::system_category(),
            "ioctl failed");
            }
      return mktime(&tm.tm);
        }

测试代码

#include <iostream>
#include <system_error>#include <time.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/rtc.h>class Rtc {int fd;public:Rtc() {fd = open("/dev/rtc", O_RDWR);if (fd < 0) {throw std::system_error(errno,std::system_category(),"Failed to open RTC device"); }}~Rtc() {close(fd);}time_t GetTime(void) {union {struct rtc_time rtc;struct tm tm;} tm;int ret = ioctl(fd, RTC_RD_TIME, &tm.rtc);if (ret < 0) {throw std::system_error(errno,std::system_category(),"ioctl failed");}return mktime(&tm.tm);}
};int main (void)
{Rtc rtc;time_t t = rtc.GetTime();std::cout << "Current time is " << ctime(&t) << std::endl;return 0 ;
}

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

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

相关文章

idea2023和历史版本的下载

1.idea中文官网 idea官网历史版本下载(https://www.jetbrains.com.cn/idea/download/other.html)

基于SpringBoot的“学生成绩管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“学生成绩管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面图 管理员功能界面图 学生管理界面图…

蓝桥杯2019年第十届省赛真题-修改数组

查重类题目&#xff0c;想到用标记数组记录是否出现过 但是最坏情况下可能会从头找到小尾巴&#xff0c;时间复杂度O(n2)&#xff0c;数据范围106显然超时 再细看下题目&#xff0c;我们重复进行了寻找是否出现过&#xff0c;干脆把每个元素出现过的次数k记录下来&#xff0c;直…

做抖音小店有何秘诀?2步提高流量和转化率,行业秘诀分享!

大家好&#xff0c;我是电商花花。 我们做抖音小店&#xff0c;最重要的就两点&#xff0c;一个是店铺的流量&#xff0c;一个是店铺的转化率。 店铺想要出单&#xff0c;赚钱&#xff0c;必然是离不开店铺的流量和转化率了&#xff0c;但是如何让流量变成销量这才是需要我们…

redis概述和安装

1 、redis概述和安装 1.1、安装redis 1. 下载redis2. 地址 : https://download.redis.io/releases/ 3. 选择需要的版本1.2 将 redis 安装包拷贝到 /opt/ 目录 1.3. 解压 tar -zvxf redis-6.2.1.tar.gz1.4. 安装gcc yum install gcc1.5. 进入目录 cd redis-6.2.11.6 编译 …

Linux第76步_“gpio子系统”下的LED驱动

使用新字符设备驱动的一般模板和“gpio子系统”&#xff0c;以及设备树&#xff0c;驱动LED。 1、添加“gpio_led”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“…

[零声教育] C++高性能日志课程总结

高性能日志 1 数据肯定是批量写入的 如果数据单笔写入会造成 磁盘寻址、频繁用户态/内核态的切换 &#xff08;耗时&#xff09; 2 fwrite/write 的区别 fwrite() 是C标准库中的函数&#xff0c;而 write() 是系统调用接口。fwrite底层也是通过write来实现的。 二者均都有缓冲…

重学SpringBoot3-ErrorMvcAutoConfiguration类

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 重学SpringBoot3-ErrorMvcAutoConfiguration类 ErrorMvcAutoConfiguration类的作用工作原理定制 ErrorMvcAutoConfiguration示例代码1. 添加自定义错误页面2.自定义错误控制器3. ErrorAttributes定制错误信息 结…

Java学习记录(十七)IO流(三)

转换流&#xff08;在字节流中想使用字符流的方法时使用&#xff09; 转换流是字节流和字符流之间的桥梁&#xff0c;转换流本身其实就是字符流所以可以使用字符流里的相关方法&#xff0c;通过InputStreamReader字符转换输入流能将字节流转化为字符流输入到内存中&#xff0c…

YOLOv8改进 | 注意力机制 | 添加YOLO-Face提出的SEAM注意力机制优化物体遮挡检测(附代码 + 修改教程)

一、本文介绍 本文给大家带来的改进机制是由YOLO-Face提出能够改善物体遮挡检测的注意力机制SEAM,SEAM(Spatially Enhanced Attention Module)注意力网络模块旨在补偿被遮挡面部的响应损失,通过增强未遮挡面部的响应来实现这一目标,其希望通过学习遮挡面和未遮挡面之间的…

.net core框架

ASP.NET Core 入门 跨平台开源框架 B/S 类与方法 Console 部分称为“类”。 类“拥有”方法&#xff1b;或者可以说方法存在于类中。 WriteLine() 部分称为“方法”。 想要使用方法就要知道方法在哪里 —————————— 执行流 一次执行一段 ASP.NET Core 是什么东西…

玩转SpringBoot:SpringBoot的几种定时任务实现方式

引言 在现代软件开发中&#xff0c;定时任务是一种常见的需求&#xff0c;用于执行周期性的任务或在特定的时间点执行任务。这些任务可能涉及数据同步、数据备份、报表生成、缓存刷新等方面&#xff0c;对系统的稳定性和可靠性有着重要的影响。Spring Boot提供了强大且简单的定…

VikeCTF 2024

VikeCTF 2024 WP 由于环境原因很多靶场的过程图片没法复现截图。。。 web Ponies 算是一个签到题&#xff0c;看到源码这里其实是一个快速跳转的程序&#xff0c;我们看到tag.src直接进行访问&#xff0c;可以看到源码里面&#xff0c;从里面分析拿到flag function recurs…

分享那些在云发生的奇妙故事 ~~ 征文挑战赛来啦!

云布道师 简介&#xff1a; 在数字化转型的大潮下&#xff0c;云计算已深度渗透各行各业&#xff0c;成为企业创新和发展的关键驱动力。本栏目旨在通过全面挖掘并生动展现“客户如何用好云”的实战历程&#xff0c;深入剖析行业痛点解决之道&#xff0c;以鲜活的案例故事呈现云…

Rust 语言的 for 循环用法

在 Rust 中&#xff0c;for 循环是一种用于迭代集合&#xff08;如数组、切片、向量、字符串、映射、通道等&#xff09;或其他可迭代对象的方式。Rust 的 for 循环语法相对直观&#xff0c;并且与许多其他编程语言中的 for 循环类似。 以下是 for 循环在 Rust 中的一些常见用…

流畅的Python(十八)-使用asyncio包处理并发

一、核心要义 1. 对比一个简答的多线程程序和对应的asyncio版,说明多线程和异步任务之间的关系 2. 网络下载的异步版 3. 在异步编程中,与回调相比&#xff0c;协程显著提升性能的方式 二、代码示例 1、相关知识点 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time …

算法50:动态规划专练(力扣514题:自由之路-----4种写法)

题目: 力扣514 &#xff1a; 自由之路 . - 力扣&#xff08;LeetCode&#xff09; 题目的详细描述&#xff0c;直接打开力扣看就是了&#xff0c;下面说一下我对题目的理解: 事例1&#xff1a; 输入: ring "godding", key "gd" 输出: 4. 1. ring的第…

RStudio更换R语言版本

今天下载R语言用于读取.xlsx文件的readxl包时&#xff0c;RStudio提示该包是使用R-4.3.3版本构建&#xff0c;而我现在使用的是R-4.3.2版本&#xff0c;所以需要升级一下R语言版本&#xff0c;这里先下载最新版本的R语言&#xff0c; 下载地址&#xff1a;The Comprehensive R…

Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)

文章目录 1、什么是Jenkins的流水线?2、流水线语法2.1、声明式流水线2.2、脚本化流水线 3、流水线示例3.1、使用声明式流水线的语法编写的 Jenkinsfile 文件3.2、Pipeline 各种语言示例3.2.1 Java&#xff1a;3.2.2 Node.js / JavaScript3.2.3 Python 4、一套完整的Devops Jen…

【ICCV21】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

文章目录 0. Abstract1. Introduction2. Related Work3. Method3.1 Overall Architecture3.2 Shifted Window based Self-Attention3.3 Architecture Variants 4. Experiments4.1 Image Classification on ImageNet-1K4.2 Object Detection on COCO4.3 Semantic Segmentation o…