- 博客(36)
- 资源 (2)
- 收藏
- 关注
原创 wsl的安装以及wsl+vscode的配合使用
视频连接:https://www.bilibili.com/video/BV1mf4y1g7Kd?spm_id_from=333.999.0.0全称:windows subsystem for linux(windows下的linux 子系统)本人常用于VISual studio code + wsl 来上传gitee文件wsl–(Windows subsystem for linux)优点:1、windows跟Linux 终端两者兼得2、visual studio code直接连接起来3、
2021-10-18 06:56:40
663
原创 打开ISEIP核里面的datesheet失败,显示C:\Program Files (x86) internet explorer\iexplore.exe http:\\www.xilinx.com
今天在使用ISE的时候,在建立RAM的IP,想看一下官方的datasheet,忽然发现打不开并且提示C:\Program Files (x86) internet explorer\iexplore.exe http:\www.xilinx.com…后面的就不打了图片是这样的,意思就是我们设置环境变量可以解决,或者使用浏览器打开这个网址即可!重点来了:如何解决?1、点击工具栏的Edit----preferences,也就是下图的界面2、点击HTML Browser然后我们看到如下界面,这里是我已
2021-09-28 21:07:15
1133
原创 RS485协议详解&&RS485与RS232优缺点比较
RS485协议1、简介 RS485也是UART协议,他是双向、半双工的通讯协议,双向代表可接收可发送,半双工代表同一时刻只能进行数据的接收或者数据的发送,而RS232是双向、全双工,也就是能同时收发数据。并且485采用差分的传输方式,与差分对应的是单端传输方式,并且允许多个驱动器和接收器挂在总线上,其中每个驱动器都能脱离总线!2、单端传输、差分传输 单端传输:在传输过程中,我们使用一根导线,在这根导线上传输对地之间的电位差,用这个电平差值来表示逻辑“0”和“1”,传输的信号叫单端信号 差分传
2021-09-28 20:35:12
4954
原创 关于HAL中的__weak详解
最近在使用STM32的hal库进行开发的时候,看到很多库自带的函数有很多是使用__weak修饰的例如:__weak void function(…)第一次看到这种写法,很是好奇,那么这个修饰符的作用是什么呢?其实在英语中,weak的意思就是“虚弱的”,那么这个关键字具体怎么弱了呢?其实函数名称前面加上__weak 修饰符,我们一般称这个函数为“弱函数”。加上了__weak 修饰符的函数,我们可以在这个文件中重新定义一个同名函数,也就是自己也可以写一个void function(…),如果不加
2021-09-25 15:16:05
948
原创 Error (119013): Current license file does not support the EP4CE10F17C8 device Error: Quartus II 64-B
首先我遇到的错误是:Error (119013): Current license file does not support the EP4CE10F17C8 deviceError: Quartus II 64-Bit Fitter was unsuccessful. 1 error, 1 warning Error: Peak virtual memory: 4754 megabytes Error: Processing ended: Tue Sep 07 10:15:19 2021 Er
2021-09-07 10:29:11
4956
原创 使用notepad++实现代码片段以及verilog的编译
编译:https://www.bilibili.com/video/BV1WA411c7DJ代码片段:https://www.bilibili.com/video/BV1Ah411q7gy
2021-08-26 12:13:28
550
原创 RS232与单端传输、差分传输
RS485协议1、简介 RS485也是UART协议,他是双向、半双工的通讯协议,双向代表可接收可发送,半双工代表同一时刻只能进行数据的接收或者数据的发送,而RS232是双向、全双工,也就是能同时收发数据。并且485采用差分的传输方式,与差分对应的是单端传输方式,并且允许多个驱动器和接收器挂在总线上,其中每个驱动器都能脱离总线!2、单端传输、差分传输 单端传输:在传输过程中,我们使用一根导线,在这根导线上传输对地之间的电位差,用这个电平差值来表示逻辑“0”和“1”,传输的信号叫单端信号 差分传
2021-06-16 13:46:30
3399
原创 基于FPGA的简易频率计与频率计的三种实现方法
简易频率计常用频率测量法:频率测量法、周期测量法、等精度测量法1、频率测量法(计频法):单位时间内,信号周期变化的次数,假设时间为T,那么我们在T时间内周期数为N,那么我们就可以计算出频率,T/N然后取倒数,即N/T=f缺陷:N可能会出现±1的误差,然后就影响到我们的频率,如果被测时钟频率越小,时间T不变,那么误差对结果的影响就越大总结:适用于高频信号的测量,并且会出现±1的一个误差,测量低频误差大2、周期测量法(计时法):先测量被测信号的时钟周期T,然后根据f=1/T,求出被测时钟的频率,先测量
2021-06-16 13:45:33
1392
原创 让你彻底了解亚稳态--亚稳态深入浅出
10、亚稳态 亚稳态如果不解决,那么会一直向下传播,尤其是组合逻辑电路,寄存器具有消除亚稳态功能,使用多级寄存器消除亚稳态的危害,单Bit数据从低速到高速,一般采取打两拍进行对亚稳态的消除,打一拍的话,我们数据正常输出的概率是70-80%,第二拍以后数据正常输出的概率是99以上我们打的第一拍,是用来数据同步的,第二拍一般是消除亚稳态,第三拍也是消除亚稳态1、亚稳态简介 因为数据都有压摆率,我们系统时钟到达上升沿,数据没达到稳定,就会产生亚稳态,亚稳态的时候,输出信号会出现毛刺、震荡、或者固定
2021-06-10 15:43:50
5639
1
原创 让你一文了解串口通讯与RS232协议
串口RS2321、常用低速总线介绍 UART、SPI、IIC2、UART 通用异步收发传输器就是UART,是异步串行通信口的总称,是一种通用的数据通讯协议,它并不是一个协议,而是一类协议,它将在发送数据时的并行数据转换为穿行数据,接收数据时,将串行数据转换为并行数据 串口包括RS232、RS499、RS422、RS423、RS485等标准接口规范和总线标准规范3、异步、同步通讯1、SPI、IIC是同步通讯,使用同一个时钟,接收方与发送方都使用主机的时钟2、UART是异步通讯,全双工通讯
2021-06-10 15:39:52
3011
原创 关于Altera的IP核简介
IP核 IP核在别的领域的意思是知识产权,在我们ASIC跟FPGA中代表预先设计好的电路功能模块 我们把比较复杂的功能模块设计成参数可以修改的模块,让别人可以直接调用,这就是IP核IP核的存在形式分类依据:产品交付方式 1·软核—HDL语言形式 硬件语言描述 2·硬核 版图形式 3·固核 网表形式,固核是提供最终产品—掩膜(Mask)IP核的缺点 不能跨平台使用 不透明,看不到内部核心代码 定制的需要收费 无法优化,无法修改IP核分类 Ar
2021-05-26 23:19:05
1199
原创 状态机与独热码、格雷码、二进制码
状态机简称FSM,也叫同步有限状态机同步:同步的意思就是在系统时钟的作用下有限:有限代表状态机中的状态是有限的根据影响输出分为两大类,一为Moore、二为MealyMoore:若最后的输出只与当前的状态有关,与输入无关则称为 Moore 型状态机Mealy: 最后的输出不仅和当前状态有关还和输入有关则称为 Mealy 型状态机我们一般都爱画成Mealy型状态机,因为他是最简的状态转移图 三要素:输入、输出、状态 输入:决定是否进行状态的跳转以及输出 输出:根据当前状态机的状态以及
2021-05-26 23:13:31
2100
原创 PLL锁相环简介
PLL锁相环锁相环能够实现什么功能?锁相环能够实现分频,倍频,相位调制,占空比调整锁相环分为模拟锁相环跟数字锁相环,这里我们介绍模拟锁相环优点:具有输出稳定度高、相位连续可调、延时连续可调缺点:温度过高或者电磁辐射过强的时候会失锁锁相环是一个负反馈PLL锁相环主要组成部分接下来我们介绍锁相环中几个关键元件:FD/PD:鉴频鉴相器,我们的参考时钟输入时钟与反馈时钟都是输入到鉴频鉴相器中,鉴频鉴相器对比这两个时钟的相位与频率差异,如果相等,那么鉴频鉴相器输出0,如果参考时钟频率大于反馈时钟频率,
2021-05-26 23:09:35
2566
转载 寄存器变量为什么不能使用非阻塞赋值
原来的文章名称是这样的:把变量赋值给寄存器_阻塞赋值和非阻塞赋值的区别与记忆,刚好也解答了我的问题通过上面的文章先了解下,阻塞赋值和非阻塞赋值的区别。 b<=a; c<=b; 非阻塞赋值b=a; c=b; 阻塞赋值阻塞赋值中阻塞的意思是要等一会儿,阻塞了,先让赋值变量得到一个新值,然后阻塞赋值得到的是赋值变量刚刚得到的新值。非阻塞赋值中非阻塞的意思是要直接传输,不等。非阻塞赋值得到的是赋值变量的旧值,原来的那个值。现在有一个问题,对于上面的两种代码,那个电路容易实现
2021-05-18 17:04:08
304
转载 Verilog中assign的使用
assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。assign的功能属于组合逻辑的范畴,应用范围可概括为以下三点:(1)持续赋值;(2)连线;(3)对wire型变量赋值,wire是线网,相当于实际的连接线,如果要用assign直接连接,就用wire型变量。wire型变量的值随时变化。其实以上三点是相通的。要更好的把握assign的使用,Verilog中有几个要点需要深入理解和掌握:(1)
2021-05-14 17:42:21
7019
原创 关于ARRAY_SIZE宏的理解
ARRAY_SIZE这个宏,是求设备结构体中设备的个数,在linux/kernel.h中,发现 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) 其中__must_be_array(arr))作用:宏定义防止被误用,比如用在指针而不是数组上。一般用来求有多少个资源,例如ARRAY_SIZE(resources);...
2021-04-20 23:06:16
810
转载 回调函数
回调的作用回调可用于通知机制,例如,有时要在程序中设置一个计时器,每到一定时间,程序会得到相应的通知,但通知机制的实现者对我们的程序一无所知。而此时,就需有一个特定原型的函数指针,用这个指针来进行回调,来通知我们的程序事件已经发生。首先要明确的一点是,函数也可以作为函数的参数来传递好了,有了这个概念我们来说明回调函数到底是怎么回事首先至少要有 3 种类型的函数主函数:相当于整个程序的引擎,调度各个函数按序执行回调函数:一个独立的功能函数,如写文件函数中间函数:一个介于主函数和回调函数之间的函数
2021-04-19 13:39:12
388
原创 电机的死区
**1、半导体死区电压概念**首先我们先从半导体开始了解下,半导体的死区电压概念:死区电压也叫开启电压,是应用在不同场合的两个名称。死区电压,指的是即使加正向电压,也必须达到一定大小才开始导通,这个阈值叫死区电压,硅管约0.5V,锗管约0.1V。(硅和锗是制造晶体管最常用的两种半导体材料,硅管较多,锗管较少)也就是我们在二极管整流得时候理想是,整个周期都是导通的,但是由于死区电压的存在,实际上并不是全部导通的,当半导体电压<死区电压的时候不导通。**2、电机死区概念**实际上我们的电机死区概念
2021-04-17 21:57:58
3540
1
原创 在Ubuntu下安装VScode提示无法安装文件:不支持的解决方法
最近我也是遇到了这个问题,我在Ubuntu下安装VScode显示无法安装文件:不支持,当时我也是非常纳闷,因为是可以默认安装好的,都可以不适用dpkg工具都能搞定的。先说一下问题的原因吧,安装Ubuntu 20.04版本并通过FireFox进行网页下载安装包,在打开时的确会出现这样的提示。这是因为,Firefox在该版本中,默认将文件放在tmp目录下,且重启后会自动删除,软件安装无法安装该目录下的安装包。解决方法一,手动将安装包移动到其他地方,比如下载文件夹,再打开就能安装;二,使用终端在该目录下进
2021-04-12 08:00:22
6104
7
原创 对typedef void (*sighandler_t)(int)的理解(声明了一种类型:sighandler_t)
typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);此处由于加了typedef自定义了一个新类型sighandler_t,所以第二行的函数原型看起来顺眼多了,形式跟int func(char c, int i)无异,但是如果看不懂typedef语句,这两句话仍然是噩梦。要理解typedef,只要记住一句话就差不多了,那就是:typedef在语句中所起的作用只不过是把语句原先定义变
2021-04-11 20:30:51
1050
原创 linux中创建守护进程是为什么要改变工作目录
我们创建守护进程的时候为什么要改变工作目录呢?这是为了使得守护进程运行过程中不再依赖于系统的一些特定的环境比如:1、当我们在在/mnt/abc下启动守护进程,但/mnt/abc已经没有了别的用途,你想将它卸载。2、在目录/home/abc下运行守护进程,但这个目录已经没有存在必要了,你想要要删除它。如果在守护进程中没有将工作路径改到其它路径("/")的话,以上2个操作都是不能成功。所以我们要将其工作目录改变到"/"下!...
2021-04-10 19:40:29
551
原创 lessk()函数详解
C语言lseek()函数的用处:移动文件的读写位置头文件:#include <unistd.h>函数原型:off_t lseek(int fd,off_t offset,int whence)函数说明:每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置会随之增加,lseek()便是用来控制该文件的读写位置. 参数fildes 为已打开的
2021-04-08 22:40:56
552
原创 PCB为什么需要3W原则跟等长还有阻抗计算的原因
绪论首先我们需要知道,信号完整性的三个主要问题:反射,时延,串扰我们平常总与这几个关键词打交道,但是导致这些的原因是什么呢?1、串扰导致串扰的最大原因就是就是线间距,因为两条信号线之间的耦合、信号线之间的互感和互容引起线上的噪声,根据麦克斯韦定律,只要有电流的存在,就会有磁场存在,磁场之间的干扰就是串扰的来源。这个感应信号可能会导致数据传输的丢失和传输错误。(通俗易懂的就是信号线上的电流产生磁场,磁场互相干扰就容易出问题),所以我们在走线的时候尽量保持3W原则,这样可以减少大概90%的串扰,2W的话
2021-03-07 20:00:56
1667
原创 关于Gitbash不支持make命令的解决方法
windows自带的cmd终端或者powershell没有一个好看的,所以在使用终端的场合我默认喜欢用git的bash窗口。git的bash实际上也就是一个mingw,是可以支持部分linux指令的,但是只有少部分。在编译代码的时候经常会使用make命令反而在bash下默认是不支持的。解决方法:https://sourceforge.net/projects/ezwinports/files/ 去下载make-4.1-2-without-guile-w32-bin.zip 这个文件。把该文件进行解
2020-11-16 20:34:09
4221
2
原创 ARM指令集与Thumb指令集与Thumb-2指令集的区别
ARM指令集:ARM指令是32位的指令,编代码全部是 32bits 的,每条指令能承载更多的信息,因此使用最少的指令完成功能, 所以在相同频率下运行速度也是最快的, 但也因为每条指令是32bits 的而占用了最多的程序空间。Thumb指令集:Thumb指令是16位的指令长度,编代码全部是 16bits 的,每条指令所能承载的信息少,因此它需要使用更多的指令才能完成功能, 因此运行速度慢, 但它也占用了最少的程序空间,但是Thumb指令集中的数据处理指令的操作数仍然是32位,指令地址也为32位,并且有些处理
2020-11-03 20:51:38
4256
原创 FreeRtos到底是干嘛的,与普通的单片机编程(裸机开发)的区别
在嵌入式方面,很多人都知道裸机开发(也就是普通的单片机开发),也知道实时操作系统,但是大家都搞不懂他们到底有什么区别,使用实时操作系统到底有什么样的优势? 在日常的单片机开发中我们一般使用轮询系统或者前后台系统,轮询系统可以理解为一个while(1)那种死循环,一直循环执行很多的任务 例如while(1) { //点亮LED //判断按键是否按下 //摄像头接收数据 //接收温湿度数据
2020-09-23 23:27:02
4808
3
原创 关于printf的%*d
printf()跟scanf()都可以用*修饰符来表达转换说明地 含义。但是printf()跟scanf()是有区别的。在printf()中的用法就是: int width=2,num; printf("%*d",width,num);这里可以理解为把第一个参数给*,就可以理解为: printf("%2d",num);在举一个例子: int width=2,pre=2,num; printf("%*.*d",width,pre,num);这里可以理解为把前两个参数给分别给
2020-08-16 10:46:59
2073
原创 关于内联函数的优点以及跟宏相比存在的优势
内联函数相对于普通的函数存在的好处:消除函数调用时的时间开销,内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。因为函数调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行。内联函数相比于宏定义的的好处:1.内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;3.内联函数可以访问类的成员变量,宏定义则不能;4.在类中声明同时定义的成员函数,自动转化为内联函数...
2020-08-11 21:09:22
647
原创 怎么让把一个数据(写入)转换为字符串的sprintf函数
在有时候写程序的时候,我们会遇到一些问题,就是一个变量里的数据,我们想要他以字符串的格式输出,这时候我们就需要用到sprintf函数函数功能:格式化字符串,将格式化的数据写入字符串中。 函数原型:int sprintf(char *buffer, const char *format, [argument]...)第一个参数是目标字符串的地址,char buffer[100];我们可以这样定义一个数组,然后用数组名字当实参第二个参数是数据格式例如%d这样第三个是可选参数,可以为任意类型的数据,
2020-06-06 17:39:13
698
原创 MDK备注或者删除的时候变成?
有时候我们在写备注或者删除备注的时候备注会变成?这时候我们需要打开打开正上方的维修锤子一样的东西(名字叫Congfigruation)打开以后选择Editor这个选项,然后点击最上方的Encoding然后选择Chinese GB2312这个选项即可解决...
2020-06-02 22:10:59
192
转载 一阶线性非齐次微分方程的常数变易法
作者:东曦链接:https://www.zhihu.com/question/31329122/answer/134977454来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。“我们所用的仅是他的结论,并无过程。”——来自百度百科“常数变易法”词条。至于百科引文下面为什么给了思路和推导过程,我想应该是后人根据某拉格朗日大佬的结论逆推出来的。下面讲讲思路和推导...
2020-05-17 15:47:43
4893
原创 关于STM32的IIC跟EEPROM通信为什么卡死在while(I2C_CheckEvent)的EV6事件还有为什么检测的是标志位及其怎样写等待写入操作完成函数问题跟解决方法
我们在写IIC跟EEPROM 通信的时候,会遇到读不出来的一个问题实际上这是EEPROM这时候还在写入数据,然后我们的STM32的执行速度过快,然后就会卡死在while中为什么会卡死在这个地方呢,while(I2C_CheckEvent(EEPROM_I2C,I2C_EVENT_MASTER_MODE_SELECT) == ERROR); 而不是起始信号的地方?我们这里就有疑问了,明明前面...
2020-05-08 12:29:24
7291
7
原创 关于MDK的Debug调试报错问题
在有时候调试dubug的时候,会出现这个错误cannot set breakpoint(s)-HW breakpoint:all breakpoints in use.-SW breakpoint:cannot write ti memory.这个的意思就是断点设置数量过了,如果设置完了6个断点,继续往下设置的话就不会成功,会提示这个错误还有如果设置6个断点也会出现的一个警告是This...
2020-05-07 21:55:04
2211
1
原创 关于I2C的dummy write
这是不是真正向地址写数据,而是表示向设备写要读的数据的地址, 这个地址会被锁存起来,不会触发读写操作 所以才叫做dummy write!
2020-05-07 09:39:21
2598
原创 关于焊接贴片原件
首先我们来认识一下焊接的几个东西一、烙铁烙铁分为可调温的还有不可调的,推荐使用可调的,但是价钱会贵一点,因为在市面上各种各样的焊锡丝,熔点也不一样,所以还是买个可调的方便。二、烙铁头关于烙铁头,分为很多种,有尖头,马蹄头,刀头,扁头等对于焊接SOP类型的可以使用刀头跟马蹄头对于小型USB接口,这些头太大了,就用弯头对于插件类的原件一般用尖头但是在平常使用中,刀头使用的人多,当然也看...
2020-04-23 15:44:48
868
原创 关于32的DMA
根据本人的一些理解,对于DMA在这里进行一些解释:DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。(选自360百科)我们进行如下的一个比较通俗的...
2020-04-20 17:31:17
799
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人