- 博客(72)
- 收藏
- 关注
原创 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
原创 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
原创 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
原创 深度学习中张量的理解
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
原创 串口通讯基础
当上位机给串口发送(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
原创 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
原创 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
原创 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
原创 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关注的人