自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C/C++中的字符数组(字符串)

【代码】C/C++中的字符数组(字符串)

2025-07-18 17:15:17 73

原创 CV目标检测中的LetterBox操作

LetterBox原理与实践

2025-07-11 11:16:20 424

原创 链路管理和命令管理

在通信领域,是两个设备之间进行数据传输的物理或逻辑路径。“链路管理”通常是指。

2025-07-09 14:10:22 251

原创 menuconfig软件

menuconfig是一个用于配置 Linux 内核编译选项的工具。它提供了一个基于文本的图形界面,允许用户通过这个界面来选择需要编译进内核的功能、驱动程序以及各种配置参数。

2025-07-08 22:42:31 390

原创 深度学习常用工具

将两个文件夹中的文件(图像和对应的 XML 标注文件)统一重命名为 flame_01, flame_02, ..., 并且 保持图像与标注文件一一对应。将old_label标签替换为new_label标签。查找指定标签出现在哪些XML文件中;获取所有标注文件中已经标注的标签;统计目标标签,标注了多少个标注框。

2025-07-08 15:28:08 138

原创 CMake学习笔记

B。

2025-07-03 13:37:11 860

原创 C/C++注册机制

入职第一天需要应届生做自我介绍,每个人的自我介绍(展示特长)的方式不一致,需要对自我介绍做高度。不推荐使用malloc函数,而推荐数组。不推荐理由,规避内存管理。2. 数组(采样的数据结构,类似Excel记录数据)1. 抽象(采样函数指针抽象出函数接口)假定有一个业务场景,学生的信息管理系统。头文件(student.h)源文件(student.c)头文件(student.h)源文件(student.c)2.1 使用函数来动态注册。2.2 使用数组来静态注册。

2025-07-02 14:51:50 495

原创 OpenCV中创建Mat对象

【代码】OpenCV中创建Mat对象。

2025-06-25 10:43:07 269

原创 深度学习数据集加载

【代码】深度学习数据集加载。

2025-06-22 14:45:44 167

原创 ubuntu安装libevent

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

2025-06-12 17:45:29 151

原创 OpenCV基础知识

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

2025-06-12 13:24:29 118

原创 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 407

原创 FFmpeg学习笔记

ffmpeg。

2025-06-01 09:06:38 461

原创 C/C++表驱动法

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

2025-05-11 12:17:19 321

原创 Ubuntu环境安装

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

2025-04-01 23:42:12 424

原创 神经网路中的Batch Normalization

这组数据。

2025-03-23 19:27:42 683

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

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 442

原创 深度学习笔记

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

2025-03-15 16:01:10 653

原创 基于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 358

原创 QCustomplot使用实例

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

2025-03-06 15:09:09 254

原创 串口通讯基础

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

2025-03-04 23:26:43 1483

原创 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 511

原创 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 551

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

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

2025-02-18 10:09:53 217

原创 Modbus通讯协议

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

2025-02-15 17:13:16 1024

原创 SCPI命令笔记

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

2025-01-21 16:57:42 1187

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

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

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

原创 C语言中求余的作用

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

2025-01-15 10:36:05 531

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

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

2024-12-12 22:21:18 606

原创 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 851

原创 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 1580

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

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

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

原创 RK3568笔记0:环境搭建

需要添加的内容。

2024-12-07 11:57:35 299

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

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

2024-12-04 21:31:51 591

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

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

2024-11-24 22:21:43 573

原创 MCU的时钟体系

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

2024-11-17 14:21:55 627

原创 MCU中的定时器

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

2024-11-17 12:50:05 749

原创 Linux中的挂载

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

2024-11-12 23:24:06 1778

原创 RK3568笔记1:BootRom

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

2024-11-09 22:15:58 519

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

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

2024-11-03 15:51:50 493

空空如也

空空如也

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

TA关注的人

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