【STM32】RTC实时时钟,步骤超细详解,一文看懂RTC

2023-05-16

什么是RTC

RTC (Real Time Clock):实时时钟

RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。

在这里插入图片描述

在断电情况下 RTC仍可以独立运行 只要芯片的备用电源一直供电,RTC上的时间会一直走。

RTC实质是一个掉电后还继续运行的定时器,从定时器的角度来看,相对于通用定时器TIM外设,它的功能十分简单,只有计时功能(也可以触发中断)。但其高级指出也就在于掉电之后还可以正常运行。

两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时( 12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。

上电复位后,所有RTC寄存器都会受到保护,以防止可能的非正常写访问。

无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC使不会停止工作。

RCT特征:

可编程的预分频系数:分频系数高为220。
32位的可编程计数器,可用于较长时间段的测量。
2个分离的时钟:用于APB1接口的PCLK1和RTC时钟(RTC时钟的频率必须小于PCLK1时钟 频率的四分之一以上)。
● 可以选择以下三种RTC的时钟源
     ● HSE时钟除以128;
     ● LSE振荡器时钟;
     ● LSI振荡器时钟

2个独立的复位类型:
     ● APB1接口由系统复位;
     ● RTC核心(预分频器、闹钟、计数器和分频器)只能由后备域复位

3个专门的可屏蔽中断:
     ● 1.闹钟中断,用来产生一个软件可编程的闹钟中断。

     ● 2.秒中断,用来产生一个可编程的周期性中断信号(长可达1秒)。

     ● 3.溢出中断,指示内部可编程计数器溢出并回转为0的状态。

RTC时钟源:
三种不同的时钟源可被用来驱动系统时钟(SYSCLK):

HSI振荡器时钟
HSE振荡器时钟
PLL时钟

这些设备有以下2种二级时钟源:

● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。 RTC用于从停机/待机模式下自动唤醒系统。
● 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。

RTC原理框图

在这里插入图片描述
RTC时钟的框图还是比较简单的,这里我们把他分成 两个部分:

APB1 接口:用来和 APB1 总线相连。 此单元还包含一组 16 位寄存器,可通过 APB1 总线对其进行读写操作。APB1 接口由 APB1 总 线时钟驱动,用来与 APB1 总线连接。

通过APB1接口可以访问RTC的相关寄存器(预分频值,计数器值,闹钟值)。

RTC 核心接口:由一组可编程计数器组成,分成 两个主要模块
在这里插入图片描述g)
第一个模块是 RTC 的 预分频模块,它可编程产生 1 秒的 RTC 时间基准 TR_CLK。RTC 的预分频模块包含了一个 20 位的可编程分频器(RTC 预分频器)。如果在 RTC_CR 寄存器中设置了相应的允许位,则在每个 TR_CLK 周期中 RTC 产生一个中断(秒中断)。
在这里插入图片描述
第二个模块是一个 32 位的可编程计数器 (RTC_CNT),可被初始化为当前的系统时间,一个 32 位的时钟计数器,按秒钟计算,可以记 录 4294967296 秒,约合 136 年左右,作为一般应用,这已经是足够了的。

RTC具体流程:

RTCCLK经过RTC_DIV预分频,RTC_PRL设置预分频系数,然后得到TR_CLK时钟信号,我们一般设置其周期为1s,RTC_CNT计数器计数,假如1970设置为时间起点为0s,通过当前时间的秒数计算得到当前的时间。RTC_ALR是设置闹钟时间,RTC_CNT计数到RTC_ALR就会产生计数中断,

  • RTC_Second为秒中断,用于刷新时间,
  • RTC_Overflow是溢出中断。
  • RTC Alarm 控制开关机

RTC时钟选择

使用HSE分频时钟或者LSI的时候,在主电源VDD掉电的情况下,这两个时钟来源都会受到影响,因此没法保证RTC正常工作.所以RTC一般都时钟低速外部时钟LSE,频率为实时时钟模块中常用的32.768KHz,因为32768 = 2^15,分频容易实现,所以被广泛应用到RTC模块.(在主电源VDD有效的情况下(待机),RTC还可以配置闹钟事件使STM32退出待机模式).

RTC复位过程

除了RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器外,所有的系统寄存器都由系统复位或电源复位进行异步复位。
RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器仅能通过备份域复位信号复位。

系统复位后,禁止访问后备寄存器和RCT,防止对后卫区域(BKP)的意外写操作

读RTC寄存器

RTC内核完全独立于APB1接口,软件通过APB1接口对RTC相关寄存器访问。但是相关寄存器只在RTC APB1时钟进行重新同步的RTC时钟的上升沿被更新。所以软件必须先等待寄存器同步标志位(RTC_CRL的RSF位)被硬件置1才读。

配置RTC寄存器

必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、
RTC_CNT、RTC_ALR寄存器。

另外,对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询
RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是’1’
时,才可以写入RTC寄存器。

RTC时钟源

RTC是一个独立的时钟源
在这里插入图片描述

RTC寄存器

  • RTC控制寄存器 (RTC_CRH, RTC_CRL)
  • RTC预分频装载寄存器 (RTC_PRLH, RTC_PRLL)
  • RTC预分频余数寄存器 (RTC_DIVH, RTC_DIVL)
  • RTC计数器寄存器 (RTC_CNTH, RTC_CNTL)
  • RTC闹钟寄存器 (RTC_ALRH ,RTC_ALRL)

RTC控制寄存器高位——RTC_CRH 寄存器

在这里插入图片描述
作用:配置3个专门的可屏蔽中断(溢出中断、闹钟中断、秒中断)使能。

注意:系统复位后所有的中断被屏蔽,因此可通过写RTC寄存器来
确保在初始化后没有挂起的中断请求。当外设正在完成前一次写操作时(标志位RTOFF=0),不
能对RTC_CRH寄存器进行写操作。

RTC控制寄存器低位——RTC_CRL 寄存器

在这里插入图片描述
一般用到该寄存器的 3,4,5位

  1. 第 3 位为寄存器同步标志位,我们在修改控制寄存器 RTC_CRH/CRL 之前,必须先判断该位,是否已经同步了,如果没有则等待同步
  2. 第 4 位为配置标位,在软件修改 RTC_CNT/RTC_ALR/RTC_PRL 的值的时候,必须先软件置位该位,以允许进入配置模式
  3. 第 5 位为 RTC 操作位,该位由硬件操作,软件只读。通过该位可以判断上次对 RTC 寄存器的操作是否完成,如果没有,我们必须等待上一次操作结束才能开始下一次,也就是判断RTOFF位是否置位。

三个位总结如下:

修改CRH/CRL寄存器,必须先判断RSF位,确定已经同步。
修改CNT,ALR,PRL的时候,必须先配置CNF位进入配置模式,修改完之后,设置CNF位为0退出配置模式
**同时在对RTC相关寄存器写操作之前,必须判断上一次写操作已经结束,**

RTC 预分频装载寄存器——(RTC_PRLH/RTC_PRLL) 寄存器

作用:配置 RTC 时钟的分频数,

比如我们使用外部 32.768K 的晶振作为时钟的输入频率,那么我们要设置这两个寄存器的值为 7FFFh(32767),就可获得周期为1秒钟的信号。
在这里插入图片描述

RTC预分频器余数寄存器(RTC_DIVH、RTC_DIVL)

作用: 和他的名字一样,获得余数,也就是获取更精确的计时,比如:0.1s ,0.01 s等

寄存器是只读寄存器,其值在RTC_PRL或RTC_CNT寄存器中的值发生改变后,由硬件重新装载。
在这里插入图片描述

RTC 计数器寄存器——RTC_CNTX 寄存器

作用:存放计数器内的计数值。也就是用来记录时钟时间

该寄存器由 2 个 16 位的寄存器组成 RTC_CNTH 和 RTC_CNTL,总共 32 位,当进行读操作时,直接返回计数器内的计数值(系统时间)
在这里插入图片描述

RTC 计数器寄存器——RTC 闹钟寄存器(RTC_ALRH、RTC_ALRL)

作用: RTC时钟中断控制寄存器

该寄存器也是由 2 个 16 位的寄存器组成 RTC_ALRH 和 RTC_ALRL,也就是32位,当可编程计数器的值与RTC_ALR中的32位值相等时,即触发一个闹钟事件,并且产生RTC闹钟中断。
在这里插入图片描述

BKP备份寄存器

备份寄存器是42个16位的寄存器。可用来存储84个字节数据。
它们处在备份区域,当VDD电源切断,仍然由VBAT维持供电。

当系统在待机模式下被唤醒,或者系统复位或者电源复位,它们也不会复位。
执行以下操作将使能对后备寄存器和RTC访问:

  • 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备时钟。
  • 设置寄存器PWR_CR的DBP位,使能对RTC和后备寄存器的访问

一般用 BKP 来存储 RTC 的校验值或者记录一些重要的数据,

在这里插入图片描述

配置RTC寄存器:

1.查询RTOFF位,知道RTOFF的值为1.

2.置CNF值为1,进入配置模式。

3.对一个或者多个RTC寄存器进行写操作。

4.清除CNF标志位,退出配置模式。

5.查询RTOFF,直到RTOFF位变1,已确认写操作已经完成。

仅当CNF标志位被清除时,写操作才能进行,这个操作至少需要3个RTCCLK周期。

RTC相关库函数

  • RTC时钟源和时钟操作函数:
 void RCC_RTCCLKConfig(uint32_t  CLKSource)//时钟源选择
 void RCC_RTCCLKCmd(FunctionalState NewState)//时钟使能
  • RTC配置函数(预分频,计数值):
void RTC_SetPrescaler(uint32_t PrescalerValue);//预分频配置:PRLH/PRLL
void RTC_SetCounter(uint32_t CounterValue)//设置计数器值:CNTH/CNTL
void RTC_SetAlarm(uint32_t AlarmValue)//闹钟设置:ALRH/ALRL
  • RTC中断设置函数:
void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState);//CRH
  • RTC配置函数:
void RTC_EnterConfigMode(void);//允许RTC配置 :CRL位 CNF
void RTC_ExitConfigMode(void);//退出配置模式:CRL位 CNF
  • RTC同步函数:
void RTC_WaitForLastTask(void)//等待上次操作完成:CRL位RTOFF
 void RTC_WaitForSynchro(void)//等待时钟同步:CRL位RSF
  • RTC相关状态位获取清除函数:
FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG);
void RTC_ClearFlag(uint16_t RTC_FLAG);
ITStatus RTC_GetITStatus(uint16_t RTC_IT);
void RTC_ClearITPendingBit(uint16_t RTC_IT);
  • 其他相关函数(BKP等)
PWR_BackupAccessCmd();//BKP后备区域访问使能
RCC_APB1PeriphClockCmd();//使能PWR和BKP时钟
RCC_LSEConfig();//开启LSE,RTC选择LSE作为时钟源	
PWR_BackupAccessCmd();//BKP后备区域访问使能
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);//读BKP寄存器
void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);//写BKP

配置RTC步骤

  • ①使能PWR和BKP时钟:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  • ② 使能后备寄存器访问:
PWR_BackupAccessCmd(ENABLE); //使能 RTC 和后备寄存器访问
  • ③复位备份区域,开启外部低速振荡器。
BKP_DeInit();//复位备份区域
  • ④ 配置RTC时钟源,使能RTC时钟:
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //选择 LSE 作为 RTC 时钟(RCC_RTCCLKSource_LSI 和 RCC_RTCCLKSource_HSE_Div128)
RCC_RTCCLKCmd(ENABLE); //使能 RTC 时钟
  • ⑤ 设置RTC预分频系数:RTC_SetPrescaler();
RTC_EnterConfigMode();/// 允许配置	
RTC_SetPrescaler(32767); //设置RTC预分频的值
RTC_WaitForLastTask();	//等待最近一次对RTC寄存器的写操作完成

  • ⑥ 设置时间:RTC_SetCounter();
RTC_EnterConfigMode();/// 允许配置
void RTC_SetCounter(uint32_t CounterValue);
RTC_WaitForLastTask();	//等待最近一次对RTC寄存器的写操作完成
  • ⑦开启相关中断(可选):
void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState)//RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能 RTC 秒中断
  • ⑧编写中断服务函数:
RTC_IRQHandler();
  • ⑨部分操作要等待写操作完成和同步。
   RTC_WaitForLastTask();//等待最近一次对RTC寄存器的写操作完成
   RTC_WaitForSynchro();	//等待RTC寄存器同步 

具体的代码,库函数写的太多了,我会用CubeMx配置下,用HAL库写一个例程,几十行就可以解决RTC
在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32】RTC实时时钟,步骤超细详解,一文看懂RTC 的相关文章

  • 基于ESP32四旋翼无人机如何根据PID算法进行电机的PWM duty补偿

    1 计算模型 电机位置和补偿输出的关系 xff0c 需要求解的是C1 C2 C3 C4的电机输出补偿值 分别对应M1 M2 M3 M4四个电机 2 推导过程 xff08 可以跳过不看 xff0c 直接到第三步 xff09 3 四个电机的PI
  • 基于ESP32四旋翼无人机的MPU6050姿态数据采集和处理方式

    1 MPU6050姿态数据采集和处理 在DMP任务里面采集MPU6050的四元数的姿态数据 xff0c 然后解算出机体坐标系的三个角姿态角 dmp task任务通过消息队列将姿态角发送给姿态控制程序 dmp task gt dandelio
  • 基于ESP32四旋翼无人机同蓝牙遥控器通信处理方式

    1 蓝牙初始化 在app main调用函数初始化蓝牙 inf ble gatt init 2 判断蓝牙是否链接 在dandelion task中调用函数inf ble gatt connected 判断蓝牙是否链接 xff0c 进而调用da
  • 论文Handheld Multi-Frame Super-Resolution的相关学习笔记

    导语 这里汇总了阅读这篇论文可能会参考到的相关知识汇总 xff0c 这篇主要为了让自己查找方便 但是也希望阅读这篇博文的你能够通过我的笔记更快理解 上手这篇论文 文章题目 xff1a Hand held Multi frame super
  • ASP读EXCEL2000的文章!!!

    由于工作需要 要用ASP读取EXCEL的工资单 所以在网上找了些资料 写了以下程序 送给大家 xff1a xff09 lt 39 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • Linux下软件安装方法

    对于Linux初学者来说 xff0c 安装一个很小的软件恐怕都是一件很让人头疼的事 xff0c 因为在Linux下安装软件不像在 Windows中那样简单 在Linux中大多数软件提供的是源代码 xff0c 而不是现成的可执行文件 xff0
  • linux指令大全(二)

    cat cd chmod chown cp cut 名称 xff1a cat 使用权限 xff1a 所有使用者 使用方式 xff1a cat AbeEnstTuv help version fileName 说明 xff1a 把档案串连接后
  • 详解C++STL容器系列(一)—— vector的详细用法和底层原理

    目录 一 介绍二 vector的创建和方法创建vector方法 三 vector的具体用法3 1 遍历vector3 1 1 迭代器访问3 1 2 下标访问3 1 3 范围for循环 3 2 vector 容量和大小3 3 vector 常
  • FTP的命令行格式

    From LinuxSir org 非常感谢javalee大哥 FTP的命令行格式为 xff1a ftp v d i n g 主机名 xff0c 其中 v 显示远程服务器的所有响应信息 xff1b n 限制ftp的自动登录 xff0c 即不
  • 一句话问答(网络无关篇+网络相关篇)

    一句话问答 网络无关篇 43 网络相关篇 网络无关篇 0001 修改主机名 vi etc sysconfig network xff0c 修改HOSTNAME一行为HOSTNAME 61 主机名 xff0c 重启后也能生效 0002 Ret
  • linux下各种分区的自动挂载和卸载.

    目前实现分区自动挂载 卸载的方法 我知道的 有两种 一种是supermount 一种是automount supermount要重新编译内核 而且不稳定 这里就不介绍了 我介绍一下automount的使用方法 首先确认你的linux已经安装
  • Linux 挂载文件系统

    1 挂载点必须是一个目录 2 一个分区挂载在一个已存在的目录上 xff0c 这个目录可以不为空 xff0c 但挂载后这个目录下以前的内容将不可用 对于其他操作系统建立的文件系统的挂载也是这样 但是需要理解的是 xff1a 光盘 软盘 其他操
  • 新浪网人力资源总监段冬聊企业对人才的需求

    http edu sina com cn l 2004 12 02 ba93631 shtml 新浪网人力资源总监段冬聊企业对人才的需求 http www sina com cn 2004 12 02 21 03 新浪教育 图为新浪网人力资
  • RESIN FAQ

    RESIN FAQ 环境变量设置 CLASSPATH C j2sdk lib dt jar C j2sdk lib tools jar JAVA HOME C j2sdk PATH C j2sdk bin 61 61 61 61 61 61
  • 研究基于PX4平台的Ardupilot代码工程的makefile结构

    最近有空 xff0c 于是想花时间好好研究下ardupilot的软件架构 xff0c 经过对ardupilot一段时间的熟悉和使用后 xff0c 对其软件架构已经有了一定的理解 xff0c 但还称不上特别完备 xff0c 所以想把每一部分的
  • Px4固件升级流程。

    PX4飞控的固件升级可以简单的分为6步 xff0c 具体如下 xff1a 1 重启飞控 重启飞控 xff0c APP发送指令mavlink飞控重启指令 等待0 5s后进入下一步 xff1b 2 识别bootloader APP发送 0x21
  • pixhawk入门知识

    Pixhawk是一种先进的自动驾驶仪 xff0c 由PX4开放硬件项目设计和3D机器人制造 它具有来自ST公司先进的处理器和传感器技术 xff0c 以及NuttX实时操作系统 xff0c 能够实现惊人的性能 xff0c 灵活性和可靠性控制任
  • MDK 注册机下载路径

    MDK下载路径 https editor csdn net md articleId 61 115338061
  • MathJax 3.0 配置方法,上手配置

    说明 网上很多MathJax 的配置方法适用于旧版本 新版的MathJax做了一些改进 配置方式也做了调整 最简单的方案 方便起见 最简单的方案如下 span class token tag span class token tag spa
  • VsCode+LaTexWorkshop外置PDF预览配置(2021.3.3)

    随着插件版本的升级有些配置命令发生了改变 xff0c 这里只是做个简单记录 xff0c 写的比较粗糙 后面有闲工夫再来做做美工 VsCode一侧配置 34 latex workshop view pdf viewer 34 34 exter

随机推荐

  • MATLAB批量为png透明(抠图)图片替换添加背景

    MATLAB批量为png透明 抠图 图片替换添加背景 说明 最近有个小需求 需要抠图后将抠图的背景替换为指定图片 如果一张一张做 图片多了实在是不好用 前提 准备好背景图片 一张准备好目标图片 很多张可以利用powertoys将目标图片统一
  • PilotPi:树莓派运行PX4配置方法

    直接看最后 即可 前言 PX4开源飞控固件支持很多款硬件 包括pixhawk cuav 和 cube等 在1 12版本中px4官方开始实验性的支持树莓派直接运行 这样我们就可以在树莓派上直接运行飞控程序 考虑到树莓派处理器的性能 那么就算可
  • PX4 1.12版本后启用lpe导致飞控启动失败的问题的解决办法

    时间 20220531 问题 在PX4 升级到1 12后使用local position estimator也就是LPE后会导致飞控启动失败 从SD卡的log中可以看到是硬件错误 解决办法 将文件 PX4Firmware根目录中的文件 pl
  • 多旋翼/四旋翼半物理(硬件在环HIL)仿真

    半物理仿真平台基本框架如图所示 多旋翼HIL平台结构图 其中 xff0c 最重要的也就是中间的部分 xff0c 一个是多旋翼模型 xff0c 另一个是传感器部分实现 硬件平台目前使用的是NI的myRIO xff08 临时的 xff09 xf
  • 如何编写VeriStand custom device/custom FPGA Target以及基本原理

    在做HIL开发的时候用到了FPGA xff0c 对于Labview中可以很方便的使用FPGA xff0c 但是在用VeriStand 做模型仿真的时候 xff0c 调用FPGA就没呢么方便了 感觉就是功能还没有完善 如果想要在Labview
  • 提高github下载速度的方法【100%有效】可达到2MB/s

    在国内从github上面下载代码的速度峰值通常都是20kB s 这种速度对于那些小项目还好 xff0c 而对于大一些的并且带有很多子模块的项目来讲就跟耽误时间 虽然有很多提速的方法 xff0c 但是实际用起来并不稳定 这里提供一种新的方法
  • 如何理解选主元的Doolittle分解法

    书中讲解不是很详细 xff0c 理解之后总结一下 首先说一下 xff0c 之所以要理解选主元的Doolittle分解是因为书中对于该分解过程的讲解比较违和 本文的目的是为了说明 xff1a 选主元的Doolittle分解法分解得到的LU矩阵
  • Latex中插入eps图片不显示,显示空白

    Latex中插入eps图片变异后 xff0c 生成的pdf文件中 xff0c 图片为空白 在文章开头 documentclas 后面添加如下代码即可 usepackage graphicx usepackage epstopdf 或者 us
  • C/C++ 信号量 CreateSemaphore 用法

    HANDLE CreateSemaphore LPSECURITY ATTRIBUTES lpSemaphoreAttributes SD LONG lInitialCount initial count LONG lMaximumCoun
  • 单片机寄存器的位操作

    1 连续多位需要操作 假如需要将B16的D8 D10位改为0001 xff0c 但是更改D8 D10位时又不能改变其它位状态 xff1a 所以需要先将D8 D10位 清0 xff0c 再改为0001 PORTB gt PCR 16 amp
  • DockerFile编写、加载、镜像保存、上传阿里云镜像

    DockerFile用来构建docker镜像文件 指令 说明 FROM 指定基础镜像 MAINTAINER 镜像是谁写的 xff0c 姓名 43 邮箱 RUN 镜像构建的时候需要运行的命令 ADD 将本地文件添加到容器中 xff0c tar
  • 手把手教你写一个属于自己的库

    写在前面 xff1a 本文章使用devc 43 43 xff0c 若用VC的别进来 xff01 如果你不知道怎么写库 xff0c 请参考我这篇文章 xff1a 手把手教你建立c 43 43 个人库 在新建好库文件之后 xff0c 我们就可以
  • warning: libopencv_imgcodecs.so.3.2, needed by /...warning: libpng12.so.0, needed by /usr/local/lib/

    warning libopencv imgcodecs so 3 2 needed by opt ros melodic lib libcv bridge so may conflict with libopencv imgcodecs s
  • /usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /usr/lib/x86_64-linux-gnu/libopencv_high

    出现一个警告信息 xff0c 暂时不管 usr bin ld warning libopencv imgcodecs so 3 2 needed by usr lib x86 64 linux gnu libopencv highgui s
  • 灰度图像二值化-----c++实现

    前天闲着没事干 xff0c 就写了写BMP图像处理 xff0c 感觉大家还比较感兴趣 所以现在没事 xff0c 继续更新 这次简单的写了灰度图像二值化 这是什么概念呢 xff1f 图像的二值化的基本原理 图像的二值化处理就是将图像上的点的灰
  • 3D打印情况记录(1)

    打印情况记录 xff08 1 xff09 打印参数打印结果 打印参数 切片软件MakerBot Print xff0c 温度195 xff0c 材料白色pla xff0c 外壳打印速度40mm s xff0c 内衬打印速度稀疏30mm s
  • 【在VScode中使用终端命令编译运行c++程序】

    在VScode下的powershell下使用命令行编译运行c 43 43 文件 xff1a 首先 xff0c 进入文件所在的路径地址 xff1a 编译生成 exe可执行文件的不同方式 xff1a 不指定生成可执行文件的名称 xff1a 执行
  • 连接字符串strcat()函数

    strcat 函数的原型 xff1a span class hljs preprocessor include lt string h gt span span class hljs keyword char span span class
  • makefile '@' '$' '$$' '-' '-n ' 使用小结

    编译代码时 xff0c 会进程接触makefile xff0c 会涉及到一些符号 xff0c 由于不明白有些意思经常出现问题 xff0c 在此归纳一下 39 64 39 符号的使用 通常makefile会将其执行的命令行在执行前输出到屏幕上
  • 【STM32】RTC实时时钟,步骤超细详解,一文看懂RTC

    什么是RTC RTC Real Time Clock xff1a 实时时钟 RTC是个独立的定时器 RTC模块拥有一个连续计数的计数器 xff0c 在相应的软件配置下 xff0c 可以提供时钟日历的功能 修改计数器的值可以重新设置当前时间和