- 博客(21)
- 收藏
- 关注
原创 书生浦语大模型L1任务-8G 显存玩转书生大模型 Demo
Streamlit Web Demo 部署 InternLM2-Chat-1.8B 模型。
2024-07-27 17:40:42
198
原创 static 变量
静态局部变量虽然存储在静态数据区,但是它的作用域仅限于定义它的代码块,sum() 中的 result 在函数外无 效,与 main() 中的 result 不冲突,除了变量名一样,没有任何关系。static 声明的变量称为静态变量,不管它是全局的还是局部的,都存储在静态数据区(全局变量本来就存储在静 态数据区,即使不加 static)。我们在 sum() 中定义了一个静态局部变量 result,它存储在静态数据区,sum() 函数执行结束也不会销毁,下 次调用继续有效。
2024-03-08 14:58:07
165
1
原创 数据什么时候会分配在堆区呢?
在C语言中,数据通常分为三个主要区域:栈区(stack)、堆区(heap)和全局/静态区域(global/static)。等,这些函数用于在程序运行时请求内存并返回对该内存的指针。这些指针指向堆区中的内存块。堆区的内存是在运行时动态分配的,因此它的生存期由程序员显式管理。当你需要一个大小在编译时未知的数组时,你可以使用动态内存分配来在堆区创建数组。如果你需要在运行时创建结构体,并且结构体的大小未知,你可以使用动态内存分配。当你需要处理字符串,但字符串的长度在编译时不确定时,可以使用动态内存分配。
2024-03-08 13:57:34
230
1
原创 内存理解--
例如一个 int 类型的数据,如果地址为 8,那么很好办,对编号为 8 的内存寻址一次就可以。如果编号为 10, 就比较麻烦,CPU 需要先对编号为 8 的内存寻址,读取 4 个字节,得到该数据的前半部分,然后再对编号为 12 的内存寻址,读取 4 个字节,得到该数据的后半部分,再将这两部分拼接起来,才能取得数据的值。请注意,字符串常量通常存储在只读的常量区,因此对它们的修改会导致未定义的行为。是一个指向字符串常量的指针,指向 "c.biancheng.net",它存储在常量区。,它们都存储在栈区。
2024-03-08 13:54:02
372
1
原创 const修饰指针变量
关键字可以用于指针的声明,用来表示指针指向的数据是常量,即不能通过该指针修改所指向的数据。的前面或后面,两者的区别在于指针本身是否可以被修改。
2024-03-08 10:56:45
214
1
原创 创建结构体实例和创建结构体指针的区别
结构体实例在栈上分配内存,而结构体指针通常在堆上分配内存(使用malloc或其他动态内存分配函数)。结构体实例的生命周期由其所在作用域控制,而结构体指针的生命周期可以通过手动释放内存来调整。结构体实例可以直接访问成员,而结构体指针需要使用箭头运算符->访问其指向的结构体的成员。选择使用结构体实例还是结构体指针取决于程序的需求和设计,以及对内存管理的要求。
2024-02-28 20:28:31
173
1
原创 C语言函数Void* 和Void
对于该函数,函数参数是void (*routine)(void *),则可以创建下面这个函数来对应。以参数代码void *(*start_routine) (void *)为例,该参数创建函数为。且由于是void类型所以该函数没有返回值。返回值为void *类型即可。
2024-02-28 14:59:29
134
1
原创 YOLOV7改进-添加注意力机制
注意力机制一般加在backbone或者是PAN层。,配合yolov7.yaml的文件来结合看!1、在github主页中找到SE.py注意力模块。
2023-07-05 20:31:16
4091
3
原创 YOLOV5改进-Optimal Transport Assignment
YOLOV5改进-Optimal Transport Assignment。2、在官网下载yolov5的源代码 ,用pycham打开。5、打开val.py,在# loss 中增加一个参数。内容最后面,结果如下图所示,从237行开始。前向推理部分要额外增加一个参数。1、首先找到该loss.py。中的内容,并将它粘贴到步骤2中。4、打开train.py。之后就可以进行训练了!
2023-07-05 15:02:49
590
1
原创 TIM定时器
脉冲值的范围取决于定时器的位数,例如对于 16 位定时器,脉冲值的范围是 0 到 65535(2^16-1)。在 PWM 模式下,定时器的计数器从 0 开始递增,当计数器的值小于等于脉冲值(`TIM_Pulse`)时,PWM 输出为高电平;在代码中的 `TIM_OCInitStructure.TIM_Pulse` 可以设置 PWM 的初始脉冲值,根据具体的应用需求进行调节,以实现所需的占空比。`TIM_Pulse` 是 TIM(定时器/计数器)的脉冲值,用于设置 PWM(脉冲宽度调制)信号的脉冲宽度。
2023-07-04 10:48:08
1202
1
原创 中断——对射式红外传感器计次、旋转编码器计次
同样地,我们可以将其他GPIO引脚配置为定时器、SPI、I2C等功能的复用输出模式,以实现与这些外设的通信或控制信号输出。简而言之,复用功能输出允许我们在同一个GPIO引脚上实现多种不同的功能,通过配置不同的复用功能模式,可以将GPIO引脚连接到不同的外设,以实现特定功能的输出。通过配置GPIO引脚的复用功能模式,我们可以利用同一个GPIO引脚输出不同的功能信号,而不仅仅是普通的数字信号。主要的区别在于复用推挽输出模式可以将GPIO口用于复用功能输出,而推挽输出模式仅用于普通数字信号的输出。
2023-07-04 10:03:09
173
1
原创 TIM定时器-输入捕获测量频率
测频法适合用于高频信号,测周法适合用于低频信号。中界频率则是高频信号和低频信号的界限。3(也可以选用Tim2,TIM1)
2023-07-03 21:27:50
93
1
原创 EtherCAT通讯简介
将计算机网络中的以太网技术应用于工业自动化领域构成工业以太网,它是当前工业控制现场总线技术的一个重要发展方向。优点:与传统技术的现场总线相比,以太网现场总线具有1、传输速度快,数据包容量大、传输距离长、使用通用的以太网元器件、性价比高。
2023-07-03 13:55:54
317
1
原创 编码器的分类及工作原理
4、信号输出形式:对于增量式编码器,每个通道的信号独立输出,输出电路形式通常有集电极开路输出、推挽输出、差分输出等。每个位置唯一,无需找参考点,增量式编码器则需要找原点信息。断电不需要回原点,编码器的抗干扰特性、数据的可靠性更高。2、精度:指编码器每个读数与转轴实际位置间的最大误差,通常用角度、角分或角秒来表示。:采用磁阻或者霍尔元件对变化的磁性材料的角度或者位移值进行测量。3、最大响应频率:指编码器每秒输出的脉冲数,单位是Hz。1、分辨率:指编码器能够分辨的最小单位。
2023-07-03 13:24:41
367
1
原创 什么是伺服电机,编码器的种类有哪些?
在技术和工程领域,"伺服"一词通常指的是伺服系统。伺服系统是一种控制系统,它通过测量和反馈来精确地控制机械装置的位置、速度或其他相关物理量。传感器用于测量所需控制的物理量,如位置、速度或加速度。这些传感器将物理量转换为电信号,以便控制系统能够理解和处理。执行器是伺服系统中的执行部分,它根据来自控制器的指令将机械装置移动到期望的位置或以期望的速度运行。常见的执行器包括伺服电机、液压马达或气动马达。控制器是伺服系统的大脑,它接收传感器测量的信号,并计算出应该给执行器发送的指令。
2023-07-03 10:55:50
295
原创 YOLOv8环境安装、数据集划分、训练、测试、推理
首先在电脑上安装好Anaconda以及Pycham软件。并配置好了基础的pytorch环境。
2023-07-02 14:19:56
11192
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人