stm32h7中RTC的BCD模式与BIN模式

在这里插入图片描述

RTC的BCD格式与BIN格式

BCD(Binary-Coded Decimal)和BIN(Binary)是两种不同的数字表示格式。

  1. BCD格式:
    BCD是一种用二进制编码表示十进制数字的格式。在BCD格式中,每个十进制数位使用4位二进制数来表示,范围从0到9。例如,数字5在BCD格式中表示为0101,数字9表示为1001。这种编码方式使得BCD数值的每个数位都直接对应于十进制数位,更易于人们阅读和理解。在RTC中,BCD格式常用于表示日期和时间的各个数位,例如年份、月份、日期、小时、分钟和秒。

  2. BIN格式:
    BIN格式是一种直接使用二进制数表示数字的格式。在BIN格式中,每个十进制数位使用4位二进制数或更多位来表示,范围从0000到1111。例如,数字5在BIN格式中表示为0101,数字9表示为1001。BIN格式直接使用二进制数表示数字,更适合用于数值计算和处理。

区别:
BCD格式和BIN格式的主要区别在于它们的编码方式和表示范围。BCD格式使用4位二进制数表示一个十进制数位,可直接对应于十进制数值,更易于人们理解和读取。而BIN格式直接使用二进制数表示数字,适合于计算和处理。BCD格式可以更直接地表示日期和时间等需要以十进制形式呈现的数值,而BIN格式更适合于数值计算和算术操作。

在RTC中,通常使用BCD格式来表示日期和时间的各个数位,以方便人们读取和理解。然而,在进行数值计算和处理时,可能需要将BCD格式的数据转换为BIN格式进行操作,然后再转换回BCD格式以进行显示和存储。这样可以在方便阅读和计算之间取得平衡。

bin与bcd的转换

在STM32H7系列微控制器的RTC模块中,并没有直接用于BCD和BIN格式之间转换的内置函数或方法。但是,你可以使用一些简单的算法来实现这种转换。以下是一个示例代码,展示了如何在STM32H7上进行BCD和BIN格式之间的转换:

// 将BCD格式转换为BIN格式
uint8_t bcd_to_bin(uint8_t bcd_value) {uint8_t tens = bcd_value >> 4;uint8_t ones = bcd_value & 0x0F;return (tens * 10) + ones;
}// 将BIN格式转换为BCD格式
uint8_t bin_to_bcd(uint8_t bin_value) {uint8_t tens = bin_value / 10;uint8_t ones = bin_value % 10;return (tens << 4) | ones;
}

在上述代码中,bcd_to_bin函数将一个BCD格式的值转换为BIN格式的值。它首先将BCD值的高4位(代表十位数)右移4位,得到十位数的值。然后,通过将十位数乘以10,再加上低4位(代表个位数),得到转换后的BIN格式值。

bin_to_bcd函数将一个BIN格式的值转换为BCD格式的值。它首先通过除以10得到BIN值的十位数,然后通过取模运算得到BIN值的个位数。最后,通过将十位数左移4位(放入BCD值的高4位),再与个位数相或,得到转换后的BCD格式值。

请注意,上述代码中的转换函数是基于8位的数值。在实际应用中,你可能需要根据具体的RTC模块和需要转换的数值位数进行适当的修改。

在这里插入图片描述

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

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

相关文章

c++程序的内存模型,new操作符详解

目录 内存四区 程序运行前 代码区 全局区 程序运行后 栈区 堆区 new操作符 创建一个数 创建一个数组 内存四区 不同区域存放不同的数据&#xff0c;赋予不同的生命周期&#xff0c;让我们更加灵活的编程 程序运行前 程序运行前就有代码区和全局区 代码区 程序编…

Windows系统下使用docker-compose安装mysql8和mysql5.7

windows环境搭建专栏&#x1f517;点击跳转 win系统环境搭建&#xff08;十四&#xff09;——Windows系统下使用docker安装mysql8和mysql5.7 文章目录 win系统环境搭建&#xff08;十四&#xff09;——Windows系统下使用docker安装mysql8和mysql5.7MySQL81.新建文件夹2.创建…

从0开始学习C++ 第十二课:指针强化

第十二课&#xff1a;指针强化 学习目标&#xff1a; 理解常量指针与指针常量的区别。学习如何使用函数指针。掌握指针与数组的高级使用技巧。 学习内容&#xff1a; 常量指针与指针常量 概念&#xff1a; 常量指针是一个指向常量的指针&#xff0c;这意味着不能通过这个指针…

Centos系统上安装PostgreSQL和常用PostgreSQL功能

安装环境 软件版本CentOSCentOS 7.xPostgreSQL9.x-12.x PostgreSQL安装 1、导入yum源 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm2、安装PostgreSQL服务 sudo yum install -y postgres…

【笔记】Helm-3 主题-12 Helm插件指南

Helm插件指南 Helm插件是一个可以通过helm CLI访问的工具&#xff0c;但不是Helm的内置代码。 已有插件可以搜索GitHub。 https://github.com/search?qtopic%3Ahelm-plugin&typeRepositories 该指南描述如何使用和创建插件。 概述 Helm插件是与Helm无缝集成的附加工具…

《Linux C编程实战》笔记:信号处理函数的返回

信号处理函数可以正常返回&#xff0c;也可以调用其他函数返回到程序的主函数中&#xff0c;而不是从处理程序返回。 setjmp/longjmp 使用longjmp可以跳转到setjmp设置的位置 这两个函数原型如下 #include<setjmp.h> int setjmp(jmp_buf env); void longjmp(jmp_buf …

Android 10.0 系统Settings修改底部导航栏和设置菜单项的分割线高度大小

1.前言 在10.0的系统定制化开发中,在进行Settings的开发中,在导航栏和设置菜单项布局中,会有一条分割线但是白色的,高度太小一般是 不注意看不出来的,产品开发需要要求设置分割线高度大一些修改分割线的高度,接下来就分析下相关功能实现流程 2.系统Settings修改底部导航…

QQ数据包解密

Windows版qq数据包格式&#xff1a; android版qq数据包格式&#xff1a; 密钥&#xff1a;16个0 算法&#xff1a;tea_crypt算法 pc版qq 0825数据包解密源码&#xff1a; #include "qq.h" #include "qqcrypt.h" #include <WinSock2.h> #include…

构建库函数雏形(以GPIO为例)

构建库函数雏形 进行外设结构体定义构建置位和复位函数进行库函数的自定义 step I&#xff1a; \textbf{step I&#xff1a;} step I&#xff1a; 对端口进行输出数据类型枚举 step II&#xff1a; \textbf{step II&#xff1a;} step II&#xff1a;对端口进行结构化描述 step…

线性代数的学习和整理23:用EXCEL和python 计算向量/矩阵的:内积/点积,外积/叉积

目录 1 乘法 1.1 标量乘法(中小学乘法) 1.1.1 乘法的定义 1.1.2 乘法符合的规律 1.2 向量乘法 1.2.1 向量&#xff1a;有方向和大小的对象 1.2.2 向量的标量乘法 1.2.3 常见的向量乘法及结果 1.2.4 向量的其他乘法及结果 1.2.5 向量的模长&#xff08;长度&#xff0…

第三篇【传奇开心果系列】Vant开发移动应用:财务管理应用

传奇开心果博文系列 系列博文目录Vant开发移动应用系列博文 博文目录一、项目目标二、编程思路三、初步实现示例代码四、扩展思路五、使用Firebase等后端服务来实现用户认证和数据存储示例代码六、用Vant组件库实现收入和支出分类管理的示例代码七、用Vant组件库实现收入和支出…

Redis经典五大类型源码及底层实现

Redis经典五大类型源码及底层实现分析 1、一些题目 redis的zset底层实现&#xff1f;redis的跳表和压缩列表说一下&#xff0c;解决了哪些问题&#xff0c;时间复杂度和空间复杂度如何&#xff1f;redis的zset使用的是什么数据结构&#xff1f; Redis数据类型的底层数据结构…

《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型

第五章 HTML 解释器和 DOM 模型 1.DOM 模型 1.1 DOM标准 DOM &#xff08;Document Object Model&#xff09;的全称是文档对象模型&#xff0c;它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这里的文档可以是 HTML 文档、XML 文档或者 XHTML 文档。D…

python基本数据类型 - 字典集合

引入 在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储&#xff0c;年龄可以使用数字存储&#xff0c;python有6种基本数据类型&#xff0c;用于各种数据的存储&#xff0c;分别是&#xff1a;numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组…

【笔记】Blender4.0建模入门-3物体的基本操作

Blender入门 ——邵发 3.1 物体的移动 演示&#xff1a; 1、选中一个物体 2、选中移动工具 3、移动 - 沿坐标轴移动 - 在坐标平面内移动 - 自由移动&#xff08;不好控制&#xff09; 选中物体&#xff1a;右上的大纲窗口&#xff0c;点击物体名称&#xff0c;物体的轮…

文件操作(上)

目录 文件的必要性&#xff1a; 文件分类&#xff1a; 程序文件&#xff1a; 数据文件&#xff1a; 文件的打开与关闭&#xff1a; fopen函数分析: ​编辑 FILE*: char*filename: char*mode: fclose函数&#xff1a; 应用&#xff1a; 文件编译 Fgetc Fputc 应用…

HNU-数据挖掘-作业1

数据挖掘课程作业作业1 计科210X 甘晴void 202108010XXX 第一题 假设所分析的数据包括属性 age,它在数据元组中的值&#xff08;以递增序&#xff09;为13 ,15 ,16 ,16 ,19 ,20 ,20 ,21 ,22 ,22 ,25 ,25 ,25 ,25 ,30 ,33 ,33 ,35 ,35 ,35 ,35 ,36 ,40 ,45 ,46 ,52,70。 a.…

基于Unity平台开发Vision Pro应用

VisionOS是苹果最新空间计算设备Vision Pro的操作系统。Unity开发人员可以利用现有的3D场景 以及为 visionOS 构建游戏或应用程序的资产。有关 visionOS 的更多信息&#xff0c;请参阅 Apple 的 visionOS 概述。 visionOS提供了几种不同的显示应用程序的模式&#xff1a;Windo…

oracle如何定期备份数据库sql文件

Oracle数据库可以使用以下方法定期备份数据库的SQL文件&#xff1a; 使用Oracle的备份和恢复工具RMAN&#xff08;Recovery Manager&#xff09;进行备份。RMAN提供了全面而高效的数据库备份和恢复功能。您可以使用RMAN备份数据库的SQL文件&#xff0c;并将其存储在指定的位置。…

Keil新建工程

1.建立工程文件夹,keil中新建工程,选择型号 2.工程文件夹里建立Start,Library,User,等文件夹,复制固件库里面的文件到工程文件夹 这一步是为了添加工程文件准备的,建文件夹是因为文件比较多需要分类管理一下,这个文件夹的名称和数量没有限制,大家也可以根据自己的理解来建,都…