union的实际使用
记录一下,免得忘记:
1、定义一个共用体变量
这里定义一个64位变量 i2creg_rev,然后通过共用体定义两个位变量bits和bits_reverse,通过bit可以访问指定位的值大小,不需要自己再左移右移转换。
bits_reverse是bits的对端转换,是用来处理大小端定义位的,免得取位值时,取反顺序了
typedef union
{unsigned long long int i2creg_rev; /**< the whole byte */struct{u64 sec : 6; /**< binary sec :7bit */u64 min : 6; /**< binary min */u64 hour : 5; /**< binary hour */u64 tod_daysL : 9; /**< binary day */u64 year : 7;u64 tod_secs : 17; /**< binary day-secs */u64 rev :14;} bits;struct{u64 rev :14;u64 tod_secs : 17; /**< binary day-secs */u64 year : 7;u64 tod_daysL : 9; /**< binary day */u64 hour : 5; /**< binary hour */u64 min : 6; /**< binary min */u64 sec : 6; /**< binary sec :7bit */} bits_reverse;
} irigb_i2creg_rev;
2、使用
先定义一个union变量,然后用i2c去读的值,赋值给rev_time,之后利用union特性,直接可以提取时分秒,年月日了
void test_union(void)
{irigb_i2creg_rev rev_time;unsigned char tdata[20] = { 0 };interface_phasei2c_read_nbytes(0x90, 0xC8, tdata, 8);Str_Printf("r 0xC8=0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x \t",tdata[7],tdata[6],tdata[5],tdata[4],tdata[3],tdata[2],tdata[1],tdata[0]);rev_time.i2creg_rev = ((unsigned long long int)tdata[0]<<56 | (unsigned long long int)tdata[1]<<48 | (unsigned long long int)tdata[2]<<40 |(unsigned long long int)tdata[3]<<32 |(unsigned long long int)tdata[4]<<24 |(unsigned long long int)tdata[5]<<16 |(unsigned long long int)tdata[6]<<8 |(unsigned long long int)tdata[7] );Str_Printf("%d:%d:%d,%d,%d,@%d\r\n",rev_time.bits.hour, rev_time.bits.min, rev_time.bits.sec,rev_time.bits.tod_daysL, rev_time.bits.year+2000, rev_time.bits.tod_secs);// Str_Printf("%d:%d:%d,%d,%d,@%d\r\n",rev_time.bits_reverse.hour, rev_time.bits_reverse.min, rev_time.bits_reverse.sec,
// rev_time.bits_reverse.tod_daysL, rev_time.bits_reverse.year+2000, rev_time.bits_reverse.tod_secs);}
相关文章:
union的实际使用
记录一下,免得忘记: 1、定义一个共用体变量 这里定义一个64位变量 i2creg_rev,然后通过共用体定义两个位变量bits和bits_reverse,通过bit可以访问指定位的值大小,不需要自己再左移右移转换。 bits_reverse是bits的对…...
EKF 自动匹配维度 MATLAB代码
该 M A T L A B MATLAB MATLAB代码实现了扩展卡尔曼滤波( E...
Oracle复合索引规则指南
在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时&#…...
JS - Array Api
判断一个对象是否为数组 /* 语法: Array.isArray(object); 参数:object 必需,要测试的对象。返回值 如果 object 是数组,则为 true;否则为 false。 如果 object 参数不是对象,则返回 false。 */ 一、改…...
【JS】for-in 和 for-of遍历对象的区别
【介绍】 for-in 和 for-of 都是 JavaScript 中用于遍历数据结构的循环语句,但它们的工作原理和适用场景有所不同。特别是它们在遍历对象时的行为是不同的。 【区别】 for-in 遍历对象 for-in 是用于遍历对象的 可枚举属性的键名(属性名)…...
【每日学点鸿蒙知识】ets匿名类、获取控件坐标、Web显示iframe标签、软键盘导致上移、改变Text的背景色
1、HarmonyOS ets不支持匿名类吗? 不支持,需要显式标注对象字面量的类型,可以参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/typescript-to-arkts-migration-guide-V5#%E9%9C%80%E8%A6%81%E6%…...
深度学习blog- 数学基础(全是数学)
矩阵:矩阵是一个二维数组,通常由行和列组成,每个元素可以通过行索引和列索引进行访问。 张量:张量是一个多维数组的抽象概念,可以具有任意数量的维度。除了标量(0D张量)、向量(…...
最后100米配送
1. 项目概述 1.1 项目目标 集成无人机与电动车:设计并实现将无人机固定在电动车上,利用电动车的电源进行飞行,实现高楼内部从电动车位置到用户办公/居住地点的最后100米精准配送。低成本实现:通过利用电动车现有的电源和结构&am…...
Linux的进程替换以及基础IO
进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系,那么我们接下来了解一下程序的替换。 首先,在进程部分我们提过了,其实文件可以在运行时变成进程,而我们使用的Linux软件其实也是一个进程,所以进一步…...
《计算机网络A》单选题-复习题库
1. 计算机网络最突出的优点是(D) A、存储容量大B、将计算机技术与通信技术相结合C、集中计算D、资源共享 2. RIP 路由协议的最大跳数是(C) A、13B、14C、15D、16 3. 下面哪一个网络层次不属于 TCP/IP 体系模型(D&a…...
闲谭Scala(2)--安装与环境配置
1. 概述 Java开发环境安装,需要两步,第一安装JDK,第二配置环境变量。 Scala的话,也是两步,第一安装Scale环境,第二配置环境变量。 需要注意的是,配置环境变量,主要是想让windows操…...
Python基于卷积神经网络的车牌识别系统开发与实现
1. 简介 车牌识别是人工智能在交通领域的重要应用,广泛用于高速违章检测、停车场管理和智能交通系统等场景。本系统通过基于卷积神经网络(CNN)的深度学习算法,结合 Python 和 MySQL 实现车牌的快速识别与管理。 系统特点&#x…...
Spring Boot集成Netty创建一个TCP服务器,接收16进制数据(自定义解码器和编码器)
Netty Netty是一个高性能、异步事件驱动的网络应用程序框架,它提供了对并发和异步编程的抽象,使得开发网络应用程序变得更加简单和高效。 在Netty中,EventLoopGroup是处理I/O操作的多线程事件循环器。在上面的示例中,我们创建了两个EventLoopGroup实例:bossGroup和worker…...
Python 中的 with open:文件操作的最佳实践
在 Python 中,文件操作是最常用的一项任务,无论是读取文件内容,还是将数据写入文件。传统的文件操作方式使用 open() 和 close() 函数来处理文件,但在实际开发中,我们推荐使用 with open() 语句来进行文件操作。本文将…...
哪些框架、软件、中间件使用了netty? 哪些中间件、软件底层使用了epoll?
使用 Netty 的软件、中间件和框架 Netty 是一个异步事件驱动的网络应用框架,广泛应用于构建高性能的网络应用程序。以下是一些使用了 Netty 的知名软件、中间件和框架: 1. Elasticsearch 描述:Elasticsearch 是一个分布式的搜索和分析引擎…...
AI 智能助手对话系统
一个基于 React 和 Tailwind CSS 构建的现代化 AI 对话系统,提供流畅的用户体验和丰富的交互功能。 项目链接:即将开放… 功能特点 🤖 智能对话:支持与 AI 助手实时对话,流式输出回答📁 文件处理ÿ…...
2024年秋词法分析作业(满分25分)
【问题描述】 请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格…...
Docker镜像瘦身:从1.43G到22.4MB
Docker镜像瘦身:从1.43G到22.4MB 背景1、创建项目2、构建第一个镜像3、修改基础镜像4、多级构建5、使用Nginx背景 在使用 Docker 时,镜像大小至关重要。我们从 create-react-app (https://reactjs.org/docs/create-a-new-react-app.html)获得的样板项目通常都超过 1.43 GB…...
前端加解密对抗encrypt-labs
前言 项目地址:https://github.com/SwagXz/encrypt-labs 作者:SwagXz 现在日子越来越不好过了,无论攻防、企业src还是渗透项目,总能看到大量的存在加密的网站,XZ师傅的前端加密靶场还是很值得做一做的,环…...
Android Notification 问题:Invalid notification (no valid small icon)
问题描述与处理策略 1、问题描述 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.notifications/com.my.notifications.MainActivity}: java.lang.IllegalArgumentException: Invalid notification (no valid small icon): Notification(chan…...
AGI通用人工智能:离我们还有多远
AGI通用人工智能:离我们还有多远📝 本章学习目标:通过本章学习,你将全面掌握"AGI通用人工智能:离我们还有多远"这一核心主题,建立系统性认知。一、引言:为什么这个话题如此重要 在人工…...
[Python3高阶编程] - 再论 WSGI、Web服务器和Python Web应用的关系
一、核心关系:WSGI 是“接口标准”,Web 服务器是“实现者”简单定义组件类型职责代表实现WSGI协议标准(PEP 3333)定义 Web 服务器与 Python 应用之间的通信接口规范:• 函数签名• 参数格式• 数据流向• 错误处理不是…...
Pronto性能优化技巧:如何加速大规模项目的代码审查
Pronto性能优化技巧:如何加速大规模项目的代码审查 【免费下载链接】pronto Quick automated code review of your changes 项目地址: https://gitcode.com/gh_mirrors/pr/pronto Pronto是一款高效的自动化代码审查工具,专为快速检查代码变更而设…...
跨场景事件:没人聊但人人踩的持久化问题
目录根本矛盾静态事件:幽灵订阅问题实例事件:随场景消亡DontDestroyOnLoad 创可贴Bootstrap 场景模式多场景编辑让情况更糟生命周期问题GES 如何解决这个问题ScriptableObject 事件存在于场景之外Behavior Window:自动生命周期管理Persistent…...
AI辅助开发:让快马平台Kimi模型帮你编写狼蛛f87pro键盘的智能配置逻辑
最近在折腾狼蛛F87Pro机械键盘的深度配置,发现它的驱动功能虽然强大,但配置逻辑稍微复杂了点。特别是想实现一些高级的宏命令和情景模式切换时,手动编写配置文件容易出错。后来尝试用InsCode(快马)平台的AI辅助开发功能,整个过程顺…...
PyTorch CUDA版本不匹配?别急着重装,试试这几种版本切换与降级方案
PyTorch CUDA版本不匹配?别急着重装,试试这几种版本切换与降级方案 当你兴致勃勃地准备运行一个PyTorch项目时,突然蹦出的RuntimeError: The detected CUDA version mismatches the version that was used to compile PyTorch就像一盆冷水浇下…...
塞尔达传说旷野之息存档编辑器:轻松掌控海拉鲁大陆的终极工具
塞尔达传说旷野之息存档编辑器:轻松掌控海拉鲁大陆的终极工具 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 还在为《塞尔达传说:旷野之息…...
OpenClaw浏览器自动化:Qwen3-14B驱动跨页面数据采集
OpenClaw浏览器自动化:Qwen3-14B驱动跨页面数据采集 1. 为什么选择OpenClaw做数据采集? 去年我接手了一个电商价格监控的需求,需要定期抓取30多个商品页面的价格波动。最初尝试用Python写爬虫,但很快遇到三个痛点:反…...
如何用Demucs实现高精度AI音频分离:从技术原理到实战应用
如何用Demucs实现高精度AI音频分离:从技术原理到实战应用 【免费下载链接】demucs Code for the paper Hybrid Spectrogram and Waveform Source Separation 项目地址: https://gitcode.com/gh_mirrors/de/demucs 在数字音频处理领域,高效分离音乐…...
OpenClaw对接Qwen2.5-VL-7B:3步完成模型地址配置
OpenClaw对接Qwen2.5-VL-7B:3步完成模型地址配置 1. 为什么选择Qwen2.5-VL-7B作为OpenClaw的视觉大脑 去年我在尝试用OpenClaw自动化处理图片资料时,发现纯文本模型经常对截图内容"睁眼说瞎话"。直到遇到Qwen2.5-VL-7B这个多模态模型&#x…...
