- 博客(43)
- 资源 (3)
- 收藏
- 关注
原创 CNN和LSTM的计算复杂度分析
今天做边缘计算的时候,在评估模型性能的时候发现NPU计算的大部分时间都花在了LSTM上,使用的是Bi-LSTM(耗时占比98%),CNN耗时很短,不禁会思考为什么LSTM会花费这么久时间。首先声明一下实验条件:这里。
2025-03-27 19:10:31
381
原创 浅谈神经网络模型保存格式
使用直接保存整个模型对象。:torch.save(model.state_dict(), 'model_state_dict.pth'),调用模型时需要手动初始化模型,结构必须和参数一致,否则会报错,优点是体积小(对于小模型两种格式大小差不多):ONNX(Open Neural Network Exchange)格式,便于跨平台使用。
2025-03-12 14:13:21
217
原创 Buildroot学习笔记
Buildroot 是一个工具, 它使用交叉编译, 可以简化和自动化为嵌入式系统构建一个完整 Linux 系统的过程。。Buildroot 可以独立应用于这些选项的任意组合(例如, 您可以使用现有的交叉编译工具链,通过 Buildroot 来单独构建根文件系统)。Buildroot 主要对使用嵌入式系统的用户有用。它们可以是 PowerPC 处理器、 MIPS 处理器、 ARM处理器等,
2025-02-26 13:27:47
721
原创 命令行参数解释
短选项字符(如'w':长选项字符串(如"width":指向存储解析结果的变量的指针。:选项的描述信息,用于帮助信息。NULL:通常为NULL,保留参数。最后两位一般是0,0:短选项字符(如'n':长选项字符串(如"name":指向存储解析结果的字符数组或字符串指针。:选项的描述信息,用于帮助信息。NULL:通常为NULL,保留参数。最后两位一般是0,0。
2025-02-17 19:08:38
261
原创 Cmake学习笔记
add_executable 同样也是一个命令,用于生成一个可执行文件, 在本例中传入了两个参数,第一个参数表示生成的可执行文件对应的文件名,第二个参数表示对应的源文件;add_library 命令用于生成库文件,在本例中我们传入了两个参数,第一个参数表示库文件的名字,需要注意的是,这个名字是不包含前缀和后缀的名字;cmake 仅仅只是根据不同平台生成对应的 Makefile,最终还是通过 make工具来编译工程源码,但是 cmake 却是跨平台的。,所以 cmake 是可以实现跨平台的编译工具。
2025-02-02 23:28:59
470
原创 Rk3588芯片介绍(含数据手册)
提供了硬件加速,RK3588支持H.265和VP9解码器通过8K@60fps, H.264解码器8K@30fps和AV1解码器4K@60fps,也支持H.264和H.265编码器通过8K@30fps,高质量的JPEG编码器/解码器,专门的图像预处理和后处理。RK3588是一款低功耗,高性能的处理器,适用于基于arm的PC和边缘计算设备,个人移动互联网设备和其他数字多媒体应用,集成了四核Cortex-A76和四核Cortex-A55以及单独的NEON协处理器。pwd=9fpc 提取码: 9fpc。
2025-01-31 20:32:26
1338
原创 基于机器学习的故障诊断(入门向)
EMD可以将信号分解为多个IMFs,每个IMF代表信号中的一个特定频率和幅度调制的成分。这使得EMD能够提供对信号的时频特征进行分析的能力特征提取用到的,是一种自适应的信号分解方法,通过将信号分解为若干个本征模态函数(Intrinsic Mode Functions, IMFs)。每个IMF代表信号在不同频率和幅度上的振动。EMD不需要预先选择基函数,而是根据信号自身的特征进行分解。可以获得信号的不同的频率成分,从高频到低频进行分解,直到无法继续分解后结束。
2025-01-08 13:38:03
1554
原创 信号的噪声处理及降噪方法
信噪比(Signal-to-noise ratio, SNR),指信号功率与噪声功率的比,也为幅度平方的比,信噪比是衡量降噪程度最直观的量,信噪比越大,信号中包含的噪声越少,降噪效果越明显。波形相似系数(Normalized Correlation Cofficient, NCC)反映去噪前后信号波形的整体相似度,不能表征波形震荡变化的细节,NCC越接近1,信号之间的相关性越高。
2025-01-07 10:37:20
2315
原创 QT故障诊断(SVM、CNN)进行数据分类(已实现)
列表推导式是从左到右进行嵌套的,按方框进行遍历,最后得到x,返回x*x,类似于C++std的遍历,形式比较简洁。1.调用SVM的C语言库:麻烦,要专门去找库,cmake可能方便一点,我的QT用的qmake,加起来比较麻烦。主要框架有一下几个部分:注意SVM模型的选择,我这里是非线性的选择的rbf。2.QT调用Python文件:简单,有现成的代码。后续就是进行训练SVM模型。一、QT实现SVM的方法。未完待续........二、python代码。
2025-01-06 22:24:28
597
原创 表达式的计算结果不是常数
产生错误:因为定义了一个变量,在数组初始化时使用变量初始化数组大小,产生报错。总结:std的标准库还是最好用的,都开始写c++了,肯定要发挥c++的特性。1.使用常量初始化数组。可以避免手动管理内存。
2025-01-06 10:22:17
247
原创 C++构造函数传入常量
常量的类型如下:基本数据类型常量:字符串常量:1.const关键字2.#define宏定义3.使用 关键字(编译调用)三、C++构造函数如何声明常量 (使用引用的方式传参).h文件.c文件
2024-12-28 12:22:08
300
原创 QT运行导入python(pytorch)程序进行深度学习(qmake)
Qt报错dependent ‘..\..\..\..\..\..\Qt\5.14.2\msvc2017\include\QtWidgets\QMainWindow‘ does not exist:pro文件添加QMAKE_PROJECT_DEPTH = 0。6.这里的python程序,就使用上文提到那篇文章的程序,打印hello,这里会显示打不开python文件,需要自己手动添加编译器路径。3.导入PYTHON环境,自己添加一个新的,参数和工作目录不变,执行挡选择你的含有pytorch的python环境。
2024-12-24 21:21:16
951
原创 GC9A01驱动移植(HALL库)
最近在做LVGL的移植,用到的屏幕驱动时GC9A01的,记录一下学习历程,防止日后遗忘。SPI的协议主要有两个部分:CS和CLK拉低后即可通信,拉高结束通信。
2024-11-13 16:25:56
809
原创 VDD、VBAT、VDDA、VREF+区别
为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰,ADC的电源引脚为VDDA是ADC参考电压,VREF+通常在100pin以上的芯片会存在,100pin一下的芯片仅存在VDDA,实际上VDDA与VREF相连接。使用电池或其他电源连接到VBAT 脚上,当VDD 断电时,可以保存备份寄存器的内容和维持RTC的功能。
2023-05-16 10:59:56
4749
原创 按键的短按和长按检测
在中断服务函数中加一个比如10ms的延时函数,延时时间的长短取决于实际所用的按键特性,只要延时时间比抖动时间略大即可。原理很简单,加了延时就避开了抖动的这段时间,在延时之后判断引脚电平,如果为低电平就表示是按下。这个方法很简单,但是不好的地方是延时占用MCU资源。尤其是这里的BLE应用,在中断服务函数中执行时间长会引起蓝牙连接中断,所以这里不能这么用,我实际测试当按键按快一点就很容易引起蓝牙连接中断。需要注意的是:10ms定时器不是一个周期性的定时器,它是一次性的,即时间到了之后就停止计时了。
2023-05-15 10:17:47
2020
原创 STM32的功耗模式
有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部 FLASH 工作在正常。区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新。:它除了关闭所有的时钟,还把 1.2V 区域的电源也完全关闭了,也就是说,从待机模。:仅关闭了内核时钟,内核停止运行,但其片上外设, CM4 核心的外设全都还照常。进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.2V。
2023-05-11 10:35:35
1115
原创 MPU6050详解(含源码)
前言:MPU6050是一款强大的六轴传感器,需要理解MPU6050首先得有IIC的基础,MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个第二 IIC 接口,可用于连接外部磁力传感器,内部有硬件算法支持.
2023-05-06 19:37:09
14858
4
原创 嵌入式C语言基础(STM32)
define是C语言的预处理命令,它用于宏定义,用来将一个标识符定义为一个字符串,该标识符称为宏名,被定义的字符串称为替换文本,采用宏定义的目的主要是方便程序编写。一般放在源文件的前面,称为预处理部分。这个仅仅只是程序文本进行替换,通常用于修改某个数据较为麻烦,使用#define。如果要重命名一个变量,正确操作应该是使用typedef。用法:#define [别名] [字符串]其中,字符串可以是常数、字符串和表达式等。例如:#define Temp 25。
2023-05-05 13:31:19
3115
2
原创 STM32下载电路和启动模式
其中SW使用CLK和SWDIO两个IO引脚分别为PA14和PA13,因此最小系统核心板只有四个引脚。常用的下载模式有两种JTAG(5针)和SW(2针),两种下载模式的引脚是通用的。设置boot0和boot1控制,分别为PB2和PB8,通常为flash启动。
2023-05-03 15:55:20
2148
原创 STM32CubeMX时钟树配置详解(F103)
学习时使用的是stm32f103系列芯片,文档的时钟树属实不适合新手阅读,STM32cube的功能很强大,时钟树清晰明了:首先我们要知道,芯片需要一个频率来进行工作,通常选用的是晶振来提供工作频率,很显然不在芯片内部,是。在上图中,我们仅需要关注蓝色框部分,这里我们(High Speed Extern--高速外部时钟),根据左边可知,输入频率设置为8Mhz。这里有同学可能会去想,为什么LSE时钟源是灰色的,因为在这里。
2023-05-03 10:22:34
7216
原创 串口信息打印规范(含打印技巧)
方法二中,若#define USER_MAIN_DEBUG,则使用user_main_printf();可以直接打印你所需的信息,而且自带\r\n,若未进行宏定义,使用对应函数则打印空白。在每一段串口打印的程序段中,加入#if Log和#endif,开启/屏蔽打印段仅需修改Log的值,为1/0-->打印/不打印信息。这里的串口打印使用printf函数,这里使用了printf重定向(借鉴的)日志级别:info(初始化)、debug(运行过程)、error(报错)[日志级别] 文件名 : 日志信息。
2023-05-02 15:02:10
2941
原创 Linux 触摸屏 (IIC驱动详解)
本文使用触摸屏iic驱动,驱动编写中要使用总线,设备,驱动分层的思想,IIC总线,触摸屏驱动,触摸屏设备,
2023-04-11 10:51:47
1906
原创 Platform虚拟总线(设备驱动分离详解)
platform_device是device的子类,设备数据类型为device,通过device_register向内核注册设备,注册设备时,名字相同时匹配成功,驱动与设备匹配以后驱动的probe函数就会执行。1、无设备树的时候,此时需要驱动开发人员编写设备注册文件,使用platform_device_register函数注册设备,最终执行probe函数。2、有设备树,修改设备树的设备节点即可,当设备与platform的驱动匹配以后,就会执行platform_driver->probe函数。
2023-04-11 10:08:31
415
原创 Linux学习记录(linux的概念及32内核介绍)
Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。根据图中描述,Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G大小的空间分成8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等。不同类型的STM32单片机的SRAM大小是不一样的,但起始地址都是0x2000 0000,终止地址都是0x2000 0000+其固定的容量大小。
2023-03-27 16:05:05
452
原创 图像边缘检测④( Sobel边缘算子,Prewitt边缘算子,Laplacian边缘算子,Canny边缘算子)
总结:Canny处理图像时,保留图像的细节会更多,适合对于需要细节的边缘检测,衣服褶皱可以检测出来。Prewitt去噪效果比较好,但是不会保留细节部分,保留的大部分是边缘轮廓,轮廓较宽,会有明显断点,不适合处理道路信息,Sobel较综合,图像不错。上述比较推荐的两种算法。
2022-03-02 18:57:55
7638
1
原创 电机驱动详解
从上图可以看出,电路是由四个NMOS管,一个motor,以及VCC,GND所构成的。可以控制栅极的电平高低,来控制NMOS管的开通与关闭,所以可以通过控制四个栅极的状态来控制MOS管的开通与关断,从而达到控制电机正反转的效果。
2022-03-02 18:30:21
25667
3
原创 图像处理MATLAB③(Roberts算子边缘检测,膨胀,滤波,腐蚀,开运算,闭运算使用方法)
Roberts算子是一种斜向偏差分的梯度计算方法,梯度的大小代表边缘的强度,梯度的方向与边缘走向垂直。Roberts算子边缘定位准,但是对噪声敏感。适用于边缘明显而且噪声较少的图像分割,在应用中经常用Roberts算子来提取道路(智能车摄像头采集信息)。
2022-02-28 12:55:38
7161
原创 如何使你的直流电机闭环?(PID讲解)
看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解
2022-02-28 09:52:28
14680
9
转载 ESP32自动下载电路(莱洛三角形ESP32自动下载部分)
ESP32下载分析ESP32作为很火的一款国产wifi+蓝牙芯片,终于我也要用上了。对一些硬件上的问题也做一个记录,因为一般自己DIY的话,硬件当然也就自己设计了。ESP32的硬件设计,当然从下载开始。如果直接用ESP32现成的模块,那真的省心很多,毕竟好多东西人家都帮你做好了。先从下面的图开始看,ESP32的启动模式如下,事实在模块上还有一个EN引脚。其实真正起作用的,是GPIO0和GPIO2,EN这个事实上是内部一个电源使能引脚。方式一:方式二:我们可...
2022-01-21 11:03:50
8981
1
原创 5V升压串充3*3.7V芯片CS5095E电路(莱洛三角形的充电部分)
一:芯片概要 CS5095E是一款5V输入,最大1.2A充电电流,支持三节锂电池串联应用 ,锂离子电池的升压充电管理IC。CS5095E集成功率MOS,采用异步开关架构,使其在应用时仅需极少 的外围器件,可有效减少整体方案尺寸,降低BOM成本。CS5095E的升压开关充电转换器的工作频率为500KHz,转换效率为90%。CS5095E输入电压为5V,内置自适应环路,可 智能调节充电电流,防止拉挂适配器输出可匹配所有适配器。 二:充电过程 CS5095E采用完整的CC/CV充电
2022-01-14 13:21:48
6497
1
原创 TPS54331DDAR降压芯片详解,一位电子大学生的日常分享(莱洛三角形的DC-DC降压部分)
最近看到不少莱洛三角形的资料,决定开始着手做一个出来,因此开设一个新的专栏--莱洛三角形。先从稳压部分开始讲起。DCDC降压芯片大同小异,原理都差不多,这次我使用的是TPS54331系列的芯片。一.特性1.3.5 ~ 28v输入电压范围2.可调输出电压低至0.8 V3.MOSFET支持3-A连续输出4.固定570 kHz开关频率5.典型的1- A关机静态电流6.可调节慢启动限制涌流电流可编程的UVLO阈值7.过电压暂态保护二:图一为引脚配置及功能,图二为经典电路图一:
2022-01-04 11:37:06
34984
11
原创 c++二叉树的创建及遍历(前序,中序,后序)带详细注释
自己确定一棵二叉树(树结点类型、数目和结构自定),利用顺序结构或者链式存储结构方法存储实现树的构造,用前序遍历、中序遍历、后序遍历输出结点数据。
2021-12-25 11:12:53
783
原创 编写一个程序计算三角形、长方形和圆形的面积,要求抽象出一个基类base,在其中说明一个纯虚函数,用来求面积,并利用单接口,多实现版本设计各图形面积的方法。
编写一个程序计算三角形、长方形和圆形的面积,要求抽象出一个基类base,在其中说明一个纯虚函数,用来求面积,并利用单接口,多实现版本设计各图形面积的方法。
2021-12-15 10:01:28
3750
stm32C8T6PCB和原理图
2023-05-04
学习原子的课程,找了很久安装包,亲测可用!!!
2023-03-08
基于MATLAB的人脸图像识别(带GUI,使用PCA和ORL)
2022-05-30
六足机器人3D打印模型 (solidworks和犀牛).zip
2021-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人