自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 I2C通信讲解

怎么在一条串口线上连接多个设备呢?由于速度同步线是由主机实时发出的,所以主机可以按需求修改通信速度,这样在一条线上可以挂接不同速度的器件,单片机和性能差的器件通信,就输出较慢的脉冲信号,和高性能芯片通信,就输出高速脉冲信号。学习一种协议,用于所有I2C器件上因为有地址保留所以只能连接111个器件芯片的地址并不是由厂商随意写的,而是要得到飞利浦公司的授权。

2025-06-05 22:33:04 452

原创 电路设计基础-3

R4需要取到一个合适的值,取到合适的值电路就会正常工作。e点电压只能到4.3V,因为Vbe压降必须是0.7V,所以Vce永远都不可能达到一个最小的导通电压,Vce之间压差太大了,当你流过一个比较大电流的时候,三极管的发热量就会特别严重,解决这个问题最简单的办法就是采用P管。这是N型三极管,两个N型半导体,一个P型半导体,相当于两个背靠背的二极管组成的,但并不是外面两个二极管接一起,只有三极管内部形成这种结构才有三极管的功能。三极管的β其实是会变化的,区间是很大的,通常在50到300之间,一般默认成100。

2025-06-05 21:22:38 694

原创 电路设计基础-2

半导体:通了电,不一定有电流通过,只有当它只有满足某一些条件的时候,才有电流流过,一般来说我们可以人为的去给半导体上面去掺杂一些材料,比如说当我们把半导体上面,掺杂一些p型的材料的时候,它就会变成p型的半导体,当我们把它掺杂一些n型的材料的时候,我们就可以把它变成一个n型的半导体,当我们把p型半导体和n型半导体结合在一起的时候,我们就说这里就形成了一个p节,这个pn节就叫二极管,二极管是我们最简单的一个晶体管。输入信号的频率低于我们低通滤波电路的截止频率的时候,它就可以顺利的通过我们这个电路。

2025-06-04 23:41:21 1024

原创 ElectronBot复刻-电路测试篇

单个 USB HUB 的扩展接口数量有限,一般常见的单芯片 USB HUB 可扩展出 4 个接口。若设备需要连接 8 个或更多 USB 设备,就需要多个 USB HUB 级联来增加接口数量,满足大量设备同时接入的需求。这里USB_DM_AUD和USB_DP_AUD就是通过USB给音频设备传输数据的,USB_DM_CAM和USB_DP_AUD就是通过USB给摄像头传输数据的,其他同理。13号接口是电源输入接口vbus_in。到了那个地方这里是电源开关控制的通断。下面是vbus电源输入接口。

2025-05-28 18:51:42 738

原创 电路设计基础

只有当电容两端的电压等于0伏的时候,就是这一点的电压和这一点电压之间没有压差的时候,我门才可以把电容当成是一根导线,如果当我电容比如说它己经充到有一个1伏的电压了,这个时候我们是不可以把电容当成是导线的,所以我们就可以把电容当成是一个导线,对我们这一个瞬间的这电路进行一个简化,然后去分析开关闭合瞬间的一个波形的变化。

2025-05-21 23:32:50 819

原创 9-5 串口收发HEX数据包&串口收发文本数据包

如果连续发送数据包,程序处理不及时,可能导致数据包错位,在这里,文本数据包,每个数据包是独立的,不存在连续,这如果错位了,问题就比较大,所以在程序这里,我们可以修改一下,等每次处理完成之后,再开始接收下一个数据包。在这里就不使用读取Flag之后立刻清除的策略了。那接下来,我们就来写一下接收这样一个数据包的代码,回到串口这里,然后在接收中断函数里,我们就需要用状态机来执行接收逻辑了。可能存在的问题是,对于Serial_TxPacket数组,还没有完全读出来,然后下一个数据就写入了,可能会串,以后遇到再解决。

2025-05-07 10:46:32 173

原创 9-4 USART串口数据包

然后执行流程是,最开始,S=0;文本数据包就得是3个字节的字符,‘1’,’0‘,’0‘,收到后还要把字符转换成数据,才能得到100。2.这个包头包尾并不是全部都需要的,比如我们可以只要一个包头,把包尾删掉,这样数据包的格式就是,一个包头FF, 加4个数据,这样也是可以的, 当检测到FF 开始接收,收够4个字节后,置标志位, 一个数据包接收完成,不过这样的话,载荷和包头重复的问题会更严重一些,比如最严重的情况下,我载荷全是FF,包头也是FF,而加上了FE作为包尾,无论数据怎么变化,都是可以分辨出包头包尾的。

2025-05-06 23:02:05 1044

原创 9-2 USART串口外设

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器(同步模式只是多了一个时钟输出而已,它只支持时输出,不支持时钟输入,所以这个同步模式更多的是为了,兼容别的协议或者特殊用途而设计的,并不支持两个USART之间进行同步通信,所以我们学习串口, 主要还是异步通信)USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个

2025-04-28 13:06:37 657

原创 9-3 串口的接收和发送

把MicroLIB勾上,MicroLIB是Keil为嵌入式平台优化的一个精简库,我们等会儿要用的printf函数就可以用这个MicroLIB。然后我们还需要对printf进行重定向,将printf函数打印的东西输出到串口,因为printf函数默认是输出到屏幕,我们单片机没有屏幕,所以要进行重定向步骤就是,在串口模块里,最开始加上,

2025-04-28 13:05:53 667

原创 9-1 USART串口协议

时钟特性,比如你发送一个波形,高电平然后低电平,接收方怎么知道你是1、0还是1、1、0、0呢?

2025-03-14 21:41:56 610

原创 文件树控件开发

然后给Tree Control添加上变量 m_Tree。然后添加上查看文件信息的按钮。双击这个按钮添加上如下代码。

2024-08-24 01:11:10 370 1

原创 client网络模块的开发和client与server端的部分联动调试

client端的deal函数,我们需要处理server端发来的很多包,但是我们又要防止内存泄漏,我们也不知道server端一次性给client端发了多少包,就不知道在这个函数哪个地方释放掉这个内存,但是我们知道的是client端的socket释放时候,我们那个包肯定处理完了,所以我们搞一个成员变量,让其在析构时候自动delete掉,我们想到了vecter,随对象的释放而析构。因为client对server是短连接,所以server端的deal函数只用处理一个包,可以随着过程释放new出来的空间。

2024-08-22 11:58:24 1206

原创 写一个远控

自己写一个远控

2024-08-14 10:12:23 1042

原创 刘建平博客latex公式提取

【代码】刘建平博客latex公式提取。

2024-06-18 17:11:59 372

原创 anaconda的基础用法

Conda创建环境相当于创建一个虚拟的空间将这些包都装在这个位置,我不需要了可以直接打包放入垃圾箱,同时也可以针对不同程序的运行环境选择不同的conda虚拟环境进行运行。这样就在这个房间里面买了一个’工具‘也就是所谓python包,我们的程序可以在这个房间里面运行。环境 = “好比一栋楼,在楼里面分配一间屋给各种‘包’放,每间房里面的‘包’互不影响”激活环境 = “告诉电脑,我现在要用这个屋子里面的‘包’来做东西了所以要进这间屋子”这是我已经安装的包,在这里面有的包我都可以当工具来使用。

2024-06-18 17:08:43 364

原创 间隔分离最大化的存在唯一性

证明存在性证明唯一性总结

2024-06-17 17:12:23 128

原创 SVM-SMO算法

输入是m个样本x1y1x2y2xmymx1​y1​x2​y2​...xm​ym​其中x为n维特征向量。y为二元输出,值为1,或者-1.精度e。输出是近似解α1)取初值α00k0α00k02)按照选第一个变量的方法选择α1k\alpha_1^kα1k​,接着按照选第二个变量的方法选择α2k\alpha_2^kα2k​,求出新的α2newuncα2newunc​α。

2024-06-16 20:31:22 1123

原创 逻辑斯蒂回归与最大熵

感觉深度之眼比较模棱两可,还是刘建平老师牛逼,清晰易懂。

2024-06-15 22:25:15 197

原创 SVM支持向量机

打个比方,要把刀哥和吴彦祖分开,豆子代表人们,加上几个特征(维度)1.20-40岁 2.女性 就可以大致将人们分的差不多了,可以继续加特征(维度)来使其更加分离。尽量小,误分类的点尽可能的少。都可以作为最终的结果, 但是我们一般采用一种更健壮的办法,即求出所有支持向量所对应的。我们可以先求优化函数对于w,b的极小值, 接着再求拉格朗日乘子α和 μ的极大值。都是一样的,这里我们仍然这么写是为了和后面加入软间隔后的SVM的算法描述一致。是函数间隔,是可变的间隔,所以我们通过变换将要求的几何间隔变为求函数间隔。

2024-06-15 22:24:07 720

原创 KKT基础知识

KKT条件(Karush–Kuhn–Tucker conditions)是最优化(特别是非线性规划)领域最重要的成果之一,是判断某点是极值点的必要条件。

2024-06-15 22:16:47 2632

原创 决策树的概念和构建

构建的二叉树尽量均衡就像一个班60个人的实力都差不多,现在要选一个人去拯救世界,就确定不了,但是一个班有一个人能力特别特出,选这个人去拯救世界的概率就比较大,就比前面的情况更有确定性最大的那个值就算均匀分布时候的那个值

2024-06-05 00:37:00 654

原创 创建自己的sdk

下面操作只能保证项目知道去哪里找了,但是不知道具体找哪个(这就需要个人设置)右键class出来这个界面,在里面勾选静态库(.lib)头文件如下,namespace可以写在头文件里面声明。代码如下,我们要将其封装为一个sdk供别人安装使用。截下来演示怎么导入到另一个项目中。将那两个文件移到那个文件夹中。我们拿到生成的这两个文件了。要把造轮子当作一种享受。

2024-06-05 00:04:13 284

原创 头文件和源文件的一些情况分析

函数和变量的声明可以有多次,但是定义只能有一次其实头文件可以写函数的定义,但是在工程里面很多人引用这个头文件很容易造成重复定义的情况//2.h//1.cppreturn 0;重复定义了```这中间写想只被编译一次的内容这个方法也可以控制软件的版本。

2024-06-04 23:47:40 390

原创 定时器和定时器的两个小项目

/头文件 # include <INTRINS.H>if(T0Count>=500)//分频500次,500msT0Count=0;if(LEDMode==0) //模式判断//LED输出,循环左移//循环右移(和普通右移不一样)

2024-05-30 23:42:11 202

原创 朴素贝叶斯

那个不太懂的点其实是Dodo讲错了,那里还是累乘的符号,然后64种情况累乘起来就是P(X=x),这是固定的,假设为C。P(Y=CK)这是按照训练集0~9的个数来计算的,注意维度的区别,有些是像素维度,有些是图片维度。注意之前我们讲的数据集是8*8的矩阵,然后我们处理矩阵的方式就是讲矩阵排列成一行。我们假设这个像素点的出现是相互独立的(在现实中并不是相互独立的)如果训练集中没有0,那么P(Y=CK)=0,就不能当分母了。注意P(B)=1, 已经知道路人抽中的就是绿豆。在X的条件下分别等于0~9的概率。

2024-05-26 23:41:11 457

原创 k近邻和kd树

前提是已经有了一棵kd树,然后来一个实例点。采用树这个特殊的数据结构来实现k近邻算法。选取k值的时候可以采用交叉验证的方法。找这个中位数是按照每棵子树来创建的。下面讲解kd树的完整构造过程。

2024-05-24 16:18:25 347

原创 LCD1602和矩阵键盘

为什么采用LCD1602不采用数码管来输出调试信息?因为数码管是程序扫描模式,太占用cpu资源了,LCD1602更像管道方式(本质还是处理中断的方式问题)

2024-05-20 22:44:39 301

原创 感知机代码

这段代码主要是判断给的图片是不是0-9之间的数据,不可细分0-9。相当于是28*28=784维度的空间,然后训练w。tqdm可以显示进度条。

2024-05-14 22:31:32 160

原创 从编辑器角度来理解定义和声明

报错,在函数里面(包括int main函数)extern声明会和定义冲突。下面这种写法就很ok。

2024-05-13 18:42:33 254

原创 inline和static底层浅析

找一段代码来底层分析反汇编结果为没有给参数压栈了,而是直接给了一个结果三,提高了代码的效率。

2024-05-13 16:01:39 267

原创 函数模板底层本质

数组(详情请看那一篇文章)大小不一样也重新生成函数。就算非类型参数值不一样编译器也重新生成函数。模板本质是编译器帮忙生成了不同的函数。

2024-05-13 00:41:42 167

原创 win10建立共享文件夹和ipad共享文件

然后回出现一个要输入用户名和密码的界面,输入自己电脑开机的用户名和密码。把Everyone的权限改为读取/写入。打开文件夹的属性,点到共享的地方。再回到之前哪个地方,点击共享。在任意地方新建一个文件夹。查看自己的局域网IP。最后点击共享就欧克了。

2024-05-12 12:11:46 533

原创 auto->decltype

a++等价于a,a++是要当a被用过(这里面要被decltype用过)才++,所以先decltype,所以直接为int类型。++a(等价于a = a+1,这个表达的值就是a+1)相当于经历了运算,又有&a这个固定地址,所以为int&引用类型。是没有固定地址的,是暂存在寄存器中的,所有这个类型直接为int(就算为int& + int&)声明变量别用auto,auto是让编辑器来自己推断,很影响运行效率。c++11标准才有的,c++14丰富了很多这个相关的用法。因为(a+b)/2没有固定地址所以是int类型。

2024-05-12 00:06:41 425

原创 函数重载和函数模板

c语言中函数名字不可重复,但是可以写代码实现。

2024-05-11 23:13:12 369

原创 函数指针的使用

函数名的本质就是内存地址。

2024-05-11 22:21:31 214

原创 传参右值引用的好处

左值有明确的内存空间,右值无明确的内存空间,230+300是没有正式的地址的,一般是临时找一个寄存器暂存,不放栈中。本质就是说右值引用可以不用占用宝贵的栈空间,而是自己找一些犄角旮旯存(一些寄存器)有时候需要临时变量来测试,这种返回结构体的行为太浪费栈空间了。和常量左值引用不同的是,右值引用还可以对右值进行修改。这是将230+300的值临时放在eax寄存器中。目前这个地方还是一知半解,需要深入学习汇编知识。右值不代表在右边,左值不代表在左边。于是可以采用右值引用来节省栈空间。

2024-05-09 00:09:35 202

原创 感知机导论

感知机也可以多分类,把多个感知机模型结合起来方便统一形式,规定一下后面的格式规定这种格式主要目的是为了简洁推导和方便coding最后一个式子是我们想办法要推导的k≤Rγ2k≤γR​2∣∣wopt∣∣1∣∣wo​pt∣∣1表示这是几何距离,这是单位法向量.统一了单位存在γ0yiwopt∗xibopt≥γ\gamma>0,\;

2024-05-08 11:40:04 410

原创 c++函数返回指针和引用

写不了,我们把指针指向了这个常量区,看似拥有了,其实不属于str我们需要把常量字符拿出来,让指针指向栈区或者堆区结果依然出错,因为strRt这个字符数组为局部变量传不出来解决办法2-将char数组定义为全局变量现成的字符串复制函数strcpy但是strcpy是不安全的编译器会报warnning两种方法可以解除法一:法二:没得任何警告如果str1用new来创建时,就会报错这是因为strcpy_s()函数是有两个版本,用两个参数、三个参数都可以,只要可以保证缓冲区大小。三个参数时:两个参数

2024-05-07 00:36:12 321

原创 数码管的显示

74HC245的作用是稳定输入输出,数据缓冲作用,DIR表示方向默认给了正电压,就是左边流向右边,后面是电阻,COM表示线路公共。数码管有两种一种的负电压促发,一种是正电压促发,上图是单数码管的引脚。有较强重影,主要是因为选模块和选数码管的代码不同步,然后数据就会串。咱们这个单片机由8个单数码管,所以要用上38译码器,如下图。74138使能端,单片机上电直接就默认接通了。上图是数码管模组的引脚,采用了引脚复用技术。所以需要delay函数来延迟。

2024-05-06 23:06:46 284

原创 统计学习方法-导论

就像一个小学生不做作业,然后被爸爸打了,然后小学生就知道做作业了,因为赌博还没有被爸爸打,所以小学生以为赌博是对的,就去赌博,然后又被爸爸打了,小学生才知道不能赌博无监督模型后面没有label(是否招女孩子喜欢)对于监督学习而言呢,从数学形式来讲,主要分两种,我们首先看一下训练集呢,我一般是这样表述的,这个T就代表训练集去圈你。training data, x1就表示这条样本,y就表示是否招女孩子喜欢,比如说这个x(x(1),x(2)…)就是我们之前的体重,身高,年龄对于每一个x呢,它其实是有很多维度的,它

2024-05-06 00:55:10 655 1

空空如也

空空如也

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

TA关注的人

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