自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 ubuntu安装libevent

6. 指定动态库所在目录。退出到文件外面,执行。

2025-06-12 17:45:29 20

原创 OpenCV基础知识

1. c++版本中,推理一帧图像耗时计算。2. c语言版中,推理一帧图像耗时计算。3. 帧、帧数、帧率的含义。

2025-06-12 13:24:29 21

原创 Ubuntu中安装CURL

如果只有configure.ac,没有configure文件。

2025-06-10 19:15:41 207

原创 ubuntu中使用docker

2. 基于本地存在的ubuntu:20.04镜像创建一个容器,容器的名为cppubuntu-1。创建的时候就会启动容器。结果出现长串的容器ID号,说明创建容器cppubuntu-1成功。6. 通过容器ID号删除容器(注意只有停止运行的容器才能删除)上一篇我已经下载了一个ubuntu:20.04的镜像;3. 查看docker中有哪些容器。7. 通过容器ID号进入容器内部。10 指定版本安装CMake;9. 安装gcc/g++8. 查看容器当前大小。9.1 查看编译器版本。4. 停止运行容器。

2025-06-07 10:34:39 477

原创 ubuntu安装Docker

14. 重启完docker之后检查registry mirror刚刚配置的加速地址是否成功。13.解决方案----配置加速地址:设置registry mirror。本文以Ubuntu20.05系统为例安装docker。1. 移除ubuntu系统自带的docker。15. 运行如下命令再次确认是否安装成功。4. 添加Docker官方GPG密钥。11. 开机自启动docker。5. 添加Docker软件源。10. 重新启动docker。3. 安装docker依赖。6. 安装docker。

2025-06-06 17:07:13 312

原创 FFmpeg学习笔记

ffmpeg。

2025-06-01 09:06:38 432

原创 C/C++表驱动法

【代码】C/C++表驱动法。

2025-05-11 12:17:19 303

原创 Ubuntu环境安装

1. 安装gcc、g++和make。2. 安装cmake。

2025-04-01 23:42:12 395

原创 神经网路中的Batch Normalization

这组数据。

2025-03-23 19:27:42 667

原创 深度学习中张量的理解

train=False, # 是否作为训练集。download=True, # 是否需要下载。[64, 3, 28, 28]表示有64张图片,每张图片有RGB,3个通道;图像的宽和高分别是28*28;labels[2]是一个张量,item()之后才能获取到张量中的值。6万张图片,每64张为一捆数据。共计938捆,最后一捆不足64张。图片的格式:torch.Size([3, 28, 28])来加载数据集,并设置了。获取第3张图像的标签。

2025-03-17 23:23:23 424

原创 深度学习笔记

想象一下你有一条生产线,这条生产线由多个工作站组成,每个工作站负责对产品进行某种特定的加工。原材料从生产线的一端进入,经过每个工作站的处理后,成品从另一端出来。在这个过程中,每个工作站都对原材料进行了某些操作,使得它逐渐变成了最终的产品。在深度学习中,神经网络就像这条生产线,输入数据就是原材料,而每一层就是一个工作站。前向传播就是指原材料(输入数据)经过各个工作站(神经网络的各层)的处理,最终变成成品(输出结果)的过程。相当于重写父类的方法并且将车间顺序组合起来。处理原材料model(x)

2025-03-15 16:01:10 644

原创 基于STM32F103C8T6的ModbusRTU通讯协议

预分频器输出的这个脉冲周期是 T = 1/10000 秒 = 0.0001秒 = 0.1毫秒;4毫秒的时间内都没接收到串口数据,说明已经接收到一帧上位机数据了。3.5T = 3.5个字符时间 = 3.5 * 10 * (1/9600) 秒 = 3.645835毫秒。串口数据位个数 = 1个起始位 + 8个数据位 + 1个停止位 = 10 bits;定时器中断事件发错的时间间隔为 = 0.1 * 40 毫秒 = 4毫秒;每个字符传输时间 = 10 * (1/9600) 秒。波特率 = 9600 位/秒;

2025-03-09 12:35:01 323

原创 QCustomplot使用实例

在逆变换的时候,需要先缩放在平移。

2025-03-06 15:09:09 230

原创 串口通讯基础

当上位机给串口发送(0x55)数据时,MCU的RX引脚接受到(0x55)数据,数据(0x55)首先进入移位寄存器。数据全部进入移位寄存器后,一次将(0x55)全部搬运到接收数据寄存器(RDR),并且触发串口接收非空中断(RXNE)标志位【前提是使能了RXNE中断】,该标志位置位表示可以向串口输入移位寄存器写数据了。当串口给上位机发送(0xAA)数据时,MCU的发送数据寄存器(TDR)先存储数据,硬件检测发送移位寄存器是否为空。

2025-03-04 23:26:43 1457

原创 IMX6Ull学习笔记1:汇编点亮LED灯

0X87800000,并且该地址是DDR的地址。由此可知需要使用DDR,所以在使用之前需要初始化DDR。配置GPIO的电气属性(包括摆率,速度,驱动能力,开漏,上下拉等等);使用正点原子的软件,添加头信息。GPIO1_I003 PIN的复用为GPIO。0X87800000地址作为代码段的起始地址。配置GPIO功能,设置输入输出模式;格式转换,将.elf转换成bin文件。-start 是汇编代码的入口函数。设置GPIO的数据寄存器;start 真正的函数区。对elf 文件进行反汇编。# 汇编代码的入口都是。

2025-03-02 19:21:58 499

原创 C/C++中的字符串

字符串表示方式:防止未定义行为:假设你有一个长度为5的字符串 ,你需要至少6个字节的空间来存储它(包括 终止符)。如果只分配了5个字节:在这种情况下, 不会被正确地视为一个C字符串,因为缺少终止符 。2.2 错误示例22.3 正确示例3. char *str和char str2[]的用法3.1 char *str的使用场景函数参数传递:当需要将字符串传递给函数时,通常使用指针,因为指针只需要传递地址,效率较高。结构体中使用字符串:3.2 char

2025-02-23 23:54:11 540

原创 C/C++语言中的表驱动法

【代码】C/C++语言中的表驱动法。

2025-02-18 10:09:53 208

原创 Modbus通讯协议

注:AO:通常使用 DAC(数字到模拟转换器)将数字信号转换为模拟信号输出。AI:模拟信号通过 ADC(模拟到数字转换器)转换为数字信号,以便在计算机或控制系统中进行处理。

2025-02-15 17:13:16 982

原创 SCPI命令笔记

5. 读取设备电压(功能和第4条命令达到一样的效果)6. 读取设备电流 (功能和第4条命令达到一样的效果)3. 清除设备的状态寄存器和事件队列。7. 查询设备当前电压测量范围。8. 查询设备当前电流测量范围。10. 设置电流的测量范围。9. 设置电压的测量范围。

2025-01-21 16:57:42 955

原创 MCU中的LSB、MSB和大端模式、小端模式

网络字节序、Modbus协议都是大端模式;主机字节序是小端模式;

2025-01-18 17:10:26 1838 1

原创 C语言中求余的作用

通过取模运算可以将一个数限制在一个特定范围内,常用于循环索引或数组处理。在哈希表或哈希算法中,取模运算常用来将哈希值压缩到数组的合法索引范围内。通过取模将数据分配到不同的组或块中。在某些低级编程中,取模可以用于对齐内存地址或判断是否为某种倍数。:均匀分配数组中的元素,例如任务分配、循环排班等。:将数据分类到不同的组,例如分桶、散列存储等。为组数),可以将数组中索引为。求余,可以将值分到特定的组。组 1: 44 67 85。组 2: 23 71 91。组 1: 20 60。组 2: 30 70。

2025-01-15 10:36:05 509

原创 C/C++中的指针函数

头文件中定义的一个结构体,用于存储分解后的时间数据。它将时间划分为年、月、日、小时、分钟、秒等字段,便于操作和格式化。return 堆空间地址;

2024-12-12 22:21:18 605

原创 MCU中的RTC

通俗点讲就是,从1970 年 1 月 1 日0时0分0秒开始按下一个秒表,秒表开始计数。计数的数值就是时间戳。时间戳的定义:是指从 1970 年 1 月 1 日0时0分0秒开始,所经过的秒数(不考虑闰秒);伦敦的时区是零时区(UTC+0),但在夏令时期间会调整为。stm32F4的RTC可以由LSE和LSI供给时钟频率。配置好RTC后,MUC就会产生一个日期时间。北京的时区是东八区(UTC+8),属于。,称为英国夏令时(BST)。

2024-12-12 21:58:25 796

原创 RK3568笔记3:开发板启动流程

并不是 U-Boot 的一部分,而是一个精简的引导加载程序,通常由 U-Boot 提供支持和构建。如果 U-Boot 配置了 SPL(如 U-Boot SPL),那么它们就可以协同工作:SPL 进行初步引导,U-Boot 负责后续完整的引导和系统启动。是第二阶段的 Bootloader,通常运行在 DDR 中,负责完成启动过程的剩余部分。的启动,初始化一些基本硬件,并从存储设备加载第二阶段 Bootloader(U-Boot)。的启动,完成硬件的完整初始化,加载操作系统内核,最终启动操作系统。

2024-12-07 17:27:17 1461

原创 RK3568笔记2:NOR_Flash和NAND_Flash与SDMMC和eMMC

在许多系统中,这些存储技术是互补的,典型的组合包括:

2024-12-07 17:25:35 739 1

原创 RK3568笔记0:环境搭建

需要添加的内容。

2024-12-07 11:57:35 293

原创 MCU利用单总线协议(1-wire)读取DHT11温湿度

数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”所得结果的末8位。一次完整的数据传输,数据为40bit,高位先出。

2024-12-04 21:31:51 571

原创 MCU定时器应用——输入捕获功能(红外NEC通讯协议)

本文采用的红外接收装置是HS0038,通信协议是NEC当接收到的输入红外光是一个频率为38khz,占空比为50%,持续时间为500us-700us的PWM波形时,HS0038的输出端就会产生一个低电平,而当输入的红外光不是此规格的信号时,HS0038就会输出一个高电平。

2024-11-24 22:21:43 522

原创 MCU的时钟体系

3. APB2总线上的时钟频率为84MHz;2. APB1总线上的时钟频率为42MHz;1. 上图是stm32F4的时钟体系图;

2024-11-17 14:21:55 608

原创 MCU中的定时器

1. 定时器的本质是一个计数器;2. 计数器是对进行计数;3. 每来一个周期的信号,计数器的cnt 加一。

2024-11-17 12:50:05 691

原创 Linux中的挂载

假设我们有一个 U 盘设备,当我们将 U 盘挂载到/mnt/usb目录时,系统会把这个 U 盘文件系统中的内容与/mnt/usb关联起来,之后我们只需进入/mnt/usb,就能看到 U 盘中的所有文件。/mnt/usb目录是空的。/mnt/usb目录中显示的是 U 盘的文件内容。

2024-11-12 23:24:06 1701

原创 RK3568笔记1:BootRom

BootRom是瑞芯微公司在生产的CPU时,存储在内部flash中的一段固件代码,用于初始化硬件和启动系统。RK3568 处理器也具备 BootROM。这是存储在处理器内部的只读存储器 (ROM) 中的一段代码,通常是不可修改的,其主要功能是在设备加电或复位时执行系统启动的第一阶段操作。

2024-11-09 22:15:58 493

原创 Boost服务器端的acceptor、io_context和socket的理解

服务器(餐厅)和 (前台服务员):(调度员/任务分配员):(电话机):

2024-11-03 15:51:50 469

原创 Boost学习笔记5:异步操作中的共享指针

客户端和服务器端都启动完成的情况下,当客户端发起一个请求给服务器,服务器接受到请求;在这个场景下,服务器端(比如你的Session:服务器端已经通过或类似方法开始接收客户端的数据。当客户端发送完数据并主动关闭连接,服务器端可能还在接收数据,但下一次读取或写入操作时会发现连接已被关闭,此时error_code会指示出现了eof或其他网络错误。:此时服务器正在处理数据,但客户端已经关闭连接。服务器在处理完数据后尝试写回响应时,发现连接已经不可用。这时会出现写入失败的错误。: 在和方法中,你会处理这些错误。

2024-11-03 11:50:14 619

原创 C++中的共享指针

【代码】C++中的共享指针。

2024-11-03 11:41:57 252

原创 Boost网络库API学习笔记

【代码】Boost网络库API学习笔记。

2024-10-30 21:50:10 483

原创 MCU裸机任务调度架构

【代码】MCU裸机任务调度架构。

2024-10-30 20:25:31 527

原创 Qt中的QCustomPlot学习记录

【代码】Qt中的QCustomPlot学习记录。

2024-10-29 17:39:32 587 1

原创 C++11中的std::bind()

std::bind是 C++11 中引入的一个标准库函数,位于头文件中。它用于创建一个可调用对象,将特定的参数绑定到一个函数、函数对象或可调用对象上,从而生成一个新的可调用对象(如函数指针、lambda 表达式或其他可调用对象)。这对于传递函数参数、简化回调或将成员函数绑定到对象非常有用。

2024-10-29 14:00:47 389

原创 C语言中的位操作/MCU中的位操作

寄存器 &= ~() 值。

2024-10-25 15:50:01 657

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除