自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(165)
  • 资源 (3)
  • 论坛 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 GPS模块配置步骤u-center/GNSS-Viewer使用方法

附件:ublox M8系列的协议手册:《u-blox 8 / u-blox M8 Receiver description Including protocol specification》该手册详细介绍了NEMA协议,ublox协议,这两种报文的详细描述,写代码时会用到。所谓GPS模块的配置,其实就是,配置让它输出哪些报文、配置报文的输出频率、波特率等。u-center软件可以配置ublox厂家的gps模块,GNSS-Viewer软件可用于配置skytrap厂家的GPS模块。...

2021-01-26 10:25:35 20

原创 STM32外部中断EXIT使用步骤与注意事项

先记录几个知识点:1、STM32的任何一个引脚均可配置成外部中断。2、PA0/PB0/PC0...等均可任选一个连接到中断线0,PA3/PB2/PC3.....等均可任何一个连接到中断线3。。。。其余pin同理3、EXTI_Line8的中断服务函数是EXTI9_5_IRQHandler,也即这个服务函数要对[5,9]这5个中断线进行服务,如何判断到底是哪个中断线引发的中断,以8号线为例,可通过这条语句查询:if(EXTI_GetITStatus(EXTI_Line8) != RESET).

2021-01-13 15:51:31 37

原创 STM32/keil把多个c文件编译为静态库lib

众所周知,编译lib的目的无非两个:加速编译、隐藏代码。一个常见的应用场景就是,把ST的标准库或HAL库等编译成lib,这样以后再编译整个工程时,就无需再次编译他们了,可以节省编译时间。当然,坏处是,无法右键1、把打算编译成lib的多个c文件放到同一个group。你也可以不把这些c文件放到同一个lib,这不影响后续步骤。放到同一个group的目的是,仅仅是方便后续操作而已。如下图,我们可以新建一个group。2、编译项目,保证项目可以编过(最好是0 warning 0 error).

2021-01-05 10:28:20 70

原创 matlab一个m文件调用另一个m文件中的多个函数

一般都是每个函数独占一个m文件,而且函数名与文件名必须相同。这条规则很难受,就不能像C语言那样,把多个函数写在一个m文件里,供别的m文件调用吗目前找到了2种方法,第一种使用函数句柄,也就是函数指针,第二种使用类的静态函数:方法1:方法2:classdef FcCommon < handle properties 静态成员变量 %列向量 end methods %普通函数块--开始

2020-12-22 11:58:09 425

原创 STM32开启浮点运算单元FPU与DSP运算库,附性能测试

STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?验证方法1:我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32..

2020-11-27 10:19:26 381

原创 单片机中断防护概述

主优先级相同的中断,相当于同处一个线程,main链条是优先级最低的线程,如果把中断分组设置为共4个主优先级,那么加上main,整个程序共有5个线程,优先级由高到低依次为:int0 int 1 int2 in3 main同级别的中断,对同一个变量的操作,永远不会发生读写一半被改掉的情况,如同main链中的各个函数一样,属于同步操作。当多线程异步操作同一个变量时,中断(线程)防护需要面临的情景:高优先级[读],低优先级[读写]异常:低优先级把变量写了一半,被高优先级给读到,低优先级必须..

2020-11-26 12:38:03 47

原创 STM32-CAN转TTL串口-使用详解,以F407为例

情况是这样的,因为项目中需要外接的串口设备很多,STM32F4的6个UART/USART已经都被占用完了,如果想继续接入串口设备,只能通过【can<->串口】转换模块来实现,而且由于can总线支持N多can节点,理论上,STM32就可以接入100多个串口设备了。但是,只使用一个【can<->串口】模块,是无法使串口设备与STM32通信的,因为单片机都是TTL电平(0~3.3或5V),是无法与can总线(差分电平2.3V)通信的,所以必须有一个模块能够把单片机发出的信号转换为CAN

2020-10-22 10:40:48 335 5

原创 已知三点求圆心和半径

https://blog.csdn.net/youhuakongzhi/article/details/86474619https://blog.csdn.net/qq_43572555/article/details/103470968很简单的推导,以后用的时候就不用浪费时间了,圆的一般方程为:三个已知点为(x1,y1) (x2,y2) (x3,y3)则圆心和半径为:需要注意,如果三个点共线,那么这三个点肯定无法形成圆,这一问题可通过上式的A来判定,A=0说明三点共线...

2020-10-11 20:20:32 236 1

原创 opencv遍历像素点最快的方法,14种选1

对于uint8类型3通道图像,不论是BGR还是HSV,这种图像在内存的排序方式就是(BGR为蓝绿红):BGRBGRBGR.....BGRBGRBGR.....BGRBGRBGR....................................对于uint8类型的单通道灰度图,排序方式就是最简单的二维数组(Y代表灰度值):YYYYYY.............YYYYYY.............YYYYYY.....................................

2020-10-11 11:09:03 160

原创 qt文本转语音tts的使用方法,QTextToSpeech

这个功能已经被qt封装好了,在不同的操作系上封装了不同的方法。在win7上,qt调用的是微软讲述者(microsoft speech),这个功能在原版win中是自带的,在ghost或者阉割版win中是没有的。需要自己安装。在安装之前,先验证一下你的系统是否可用这个功能:如上图所示,打开控制面板-->文本到语音设置-->语言选择-->预听语音。如果能够正常朗读中文文字,那就说明你的电脑的TTS功能是正常的。如果不能没有声音,或者直接报错,你就必须得重新安装TTS。需要安装:

2020-09-28 14:09:37 456 1

原创 C语言与javascript(也即js)的区别、JS局部静态变量的实现等

对于有C基础的同学来说,学js是相当简单的,语法类似,这里主要列一下两者的异同,基本上记住了这些异同点,就可以使用js了。不过C是编译性语言,js是解释性语言,差别还是不小的。1、js中的变量赋值时,除了基本类型以外,都是赋引用。2、两者都有回调函数的概念,而且函数名就是回调变量名...

2020-09-05 16:17:07 263

原创 solidworks导出obj模型和mtl材质

目录0、使用STL格式中转1、使用solidworks宏2、使用opencascade软件+step格式中转为何会有这种需求?因为大多数3D库,都支持导入obj模型和mtl材质,例如webGL、qt3D等,而我只会用solidworks进行三维建模,没有obj和mtl,程序写不下去了。。还有就是有人要把solidworks的模型,弄到三维渲染软件里进行渲染,某些渲染软件与solidworks兼容的格式只有obj。。经过一番调研,终于找到了方法。0、使用STL格式中转从网.

2020-09-04 17:01:54 565

原创 使用QT编译[vlc-qt]项目,播放RTSP等网络视频流

vlc-qt是一个国外大佬做的基于QT和VLC的开源项目,官网:https://vlc-qt.tano.si/在他的官网上可以找到项目的源代码(在git上),以及发行版。对于开发者来说,使用他的发行版是不够的,如下图所示,只提供了有限的几个版本,如果你使用的QT或者VLC与这个发行版不一致,是无法在此基础上进行二次开发的。...

2020-08-21 15:14:22 241

原创 ubuntu下QT5.13.1编译opencv2.4.13.6

下载opencv2.4.13.6的源码安装QT为避免权限问题,直接用sudo启动qt,如下图然后通过qt ->open project ,打开下载的源码的cmakeList.txt文件。打开后如下图所示:然后把[编辑构建配置]改成release模式,如下图所示。并设置好构建目录。然后修改CMAKE选项下面的CMAKE_INTALL_PREFIX的路径到你想要的位置,这个路径就是opencv编译出的库文件路径,记住他,后面要用。然后修改构建目标为:insta...

2020-06-19 16:18:32 143

原创 altium designer-绘制PCB封装footprint

一般有2种方法绘制PCB封装:一、直接建立空文件,二、使用向导一、从空文件建立PCB封装1、依次点击【文件】【新建】【库】【PCB原件库】,起名保存建议在画焊盘之前,先设置下网格间距,步骤如下,①右击绘图区,②栅格属性,③填写网格间距(注:100 mil = 2.54 mm)2、双击上一步新建好的PCB库,然后点击PCB Library选项卡进入PCB原件列表界面:3、在PCB元器件列表中右击,添加新的空白元件。下图我已经建立了多个元器件。4、点击软件工具..

2020-05-23 22:06:57 758

原创 altium designer绘制51单片机最小系统

一、绘制51单片机原理图库新建原理图库,并ctrl+s保存起来2、画出方框,并放置引脚,如下图。注意:画出第一个引脚后,可以双击修改它的编号为1,之后再次放置引脚时,编号会自动从1开始自加。3、在方框的左右两边放置引脚注意:新拖出来的引脚,带x号的一端,为将来要与导线连接的一端,所以,这一端要朝芯片的外部。按下空格键,可以实时修改引脚的方向4、编辑引脚定义。点击右下角的SCH,打开库浏览器,双击我们刚才建立好的这个原理图库文件(默认名称为Component_1...

2020-05-20 22:10:05 1744

原创 STM32使用库函数设置系统时钟频率

参考原子哥的教程http://www.openedv.com/forum.php?mod=viewthread&tid=95570&extra=page=1,原子哥排版比较乱,这里自己记录一下,以STM32F103为例:库函数的默认的系统时钟流程是这样的:首先从汇编启动文件中调用C语言函数:void SystemInit (void)这个函数会设置一些...

2020-04-17 13:55:31 714

原创 QT多线程QThread::run()与QObject::moveToThread()标准用法

目录1、使用QThread::run()2、使用QObject::moveToThread3、常见的错误编程方法QT实现多线程有两种方法:1、继承QThread类,并重写run()函数;2、写一个对象worker,声明或new一个QThread变量thread,然后把这个对象移动到子线程中:worker.moveToThread(&thread);...

2020-04-07 15:26:47 804 3

原创 一阶RC电路的时间响应分析

自控原理电容的特性是,通交流阻直流。对于一个电容来说,加在它两端的交流电压的频率越高,通过的电流就越大,而且这个增大过程是线性的,也即常见的电容上的电流公式,电流正比于电压的导数:对于如下的RC电路:输入电压ui定义为x(t),求电容两端的电压uo(t),下面定义为y(t)。解:列出电压平衡方程:整理成一阶标准型:,其中,T=RxC做拉普拉斯变换:...

2020-03-07 13:57:13 883

原创 SPI详解,以STM32F4为例

通用SPI有4根线:①时钟线SCK。②主机输出从机输入MOSI。③主机输入从机输出MISO。④片选CS。推挽上拉master output slave in简称MOSI, chip select简称CS由以上四根线定义可见,SPI是区分主机、从机的。片选线的作用:主机通过拉低某个从设备的CS,来选中这个从设备。时钟SCK只能由主机发出,从机被这个SCK驱动。根据SCK的极性(...

2020-03-02 12:04:27 1311

原创 用mission planner或者3drradioconfig软件配置X-ROCK数传电台

数传分天空端和地面端,上图这个是地面端。本质上是一样的,只是地面端集成了串口转USB,可以直接插到电脑USB上,而天空端是串口接口,如果你手头有串口转USB模块,也可以实现用两个天空端互传数据。需要注意的是,买到的数传有433M一对的,也有915M一对的。一个433和一个915显然是不能通信的。打开mission planner,依次点击下图->初始设置->可选硬件-...

2019-12-25 16:29:58 1007

原创 让程序自动记录编译时间、文件名、函数名、行号等,以QT为例

C/C++/ASM等源代码文件被编译时,可以通过C/C++编译器的内置宏定义,把编译时间记录下来,常用的宏有这么几个:__FILE__ 包含当前程序文件名的字符串__LINE__ 表示当前行号的整数__DATE__ 包含当前日期的字符串 ,__STDC__ 如果编译器遵循ANSI C标准,它就是个非零值__TIME__ 包含当前时间的字符串__FUNCTION__ 函数...

2019-11-20 18:34:25 338

原创 指向成员函数的函数指针

C语言中的函数指针还是很简单的,这里还是稍微总结一下:函数地址: 函数名,&函数名,两者均可。 函数指针变量的定义方法: 把函数名替换为你喜欢的变量名,并在前面加*号,并把*号和函数名()起来。 函数指针类型的定义方法: 把上一步的变量名替换为你喜欢的类型名,前面再直接加typedef即可。例子:(1) 函数定义如下:char *parseF...

2019-11-14 16:35:43 119

原创 QT socket TCP通信程序模板--客户端

服务器端的操作是,建立server,然后进入listen监听状态,等待客户端发起连接。客户端的编程更为简单:(1)建立tcp socket(2)把QTcpSocket的3个关键的信号槽connect起来,3个信号如下:(3)把客户端QTcpSocke对象绑定(bind)与本机端口绑定。当然,也可以不绑定,操作系统会帮我们随机绑定一个可用端口。(4)向服务器发起连接请求:voi...

2019-11-09 17:37:46 345

原创 QT socket TCP通信程序模板--服务端

TCP通信,要区分服务端,和客户端。服务端的功能是,设置要监听的端口,然后等待客户端发起的连接。QT中TCP服务器端的编程步骤:(1)new一个TCP服务器 QTcpServer(2)进入listen监听状态(形参为:要监听的IP,一般填Any, 要监听的端口号)(3)一旦有客户端申请接入,服务端会产生消息QTcpServer::newConnection,在消息的处理...

2019-11-09 16:07:38 348

原创 QT socket UDP通信程序模板

现列出几个概念:①本地IP。对于运行在PC机上的程序,本地IP就是PC的IP,以windows为例,直接在命令行中执行ipconfig命令,即可查到本机IP,如下图:②远程IP。我们写的程序要把数据发送到哪个IP的哪个端口上,这个IP就是指的远端(远程)IP③端口号。本质上也属于协议地址的一部分,可以认为是某个IP下更细分的地址。可以这样理解,IP代表了一栋楼的楼号,那么端口号就代表了...

2019-11-08 15:28:55 247

原创 STM32的Code/RO/RW/ZI区、Flash/Ram的占用情况、堆栈大小Stack_Size/Heap_Size的设置

以cortex-M3为例,例如STM32F103这篇文章要讲2个问题:1、编译出的程序(指令)、变量的存放位置、大小?2、在代码和keil中,“堆、栈”两者的大小如何设置?keil编译完成后,会有提示,形如:Program Size: Code=1148 RO-data=424 RW-data=20 ZI-data=1636 其中:①Code为代码,本质上就...

2019-10-15 18:37:37 5205 2

原创 matlab/simulink中带参数的S-Function(S函数)的写法

S函数的相关概念与写法,直接在帮助文件中搜:【MATLAB S-Functions Create custom blocks defined】、【S-Function Concepts】等S函数模块可以从下图中拖出来:图 1其中S-Function是正宗的S函数模块,旁边还有一个S-Function builder是给新手用的,只要学会了S函数模块,S builder模块自然...

2019-10-12 11:54:44 3057

原创 欧拉公式的直观理解

知乎马同学关于欧拉公式的讲解:https://www.zhihu.com/question/41134540至于用泰勒公式展开来证明欧拉公式就不贴图了,老生常谈了,这里只贴一些直观上的理解,一旦记住了这些直观的图形,欧拉公式自然就记住了,感谢马同学。...

2019-10-11 14:22:26 240

转载 word通配符

https://www.duote.com/tech/word/111691.html^? 任意字符; ^# 任意数字;  ^$ 任意字母;  ^p 段落标记;  在通配符时,应使用^13代替^p^t 格式标记;  ^d 域;^w 空白区 (空格、不间断空格、以及任意顺序的格式标记);  ^f 脚注标记;  ^e 尾注标记;  ^b 分节符;  ^...

2019-10-10 09:37:51 1656

原创 matlab面向对象编程的基本知识---声明与继承、构造函数、成员变量、成员函数、访问权限等

classdef quaternion < handle % 四元数 qa qx qy qz properties data = zeros(4, 1);%列向量 end methods %普通函数块--开始 function obj = quaternion(varargin) %...

2019-09-29 14:56:14 500

原创 matlab handle类和value类的区别

handle类和value类又分别叫做:句柄类和实体类。参考:https://blog.csdn.net/qq_43575267/article/details/94144564handle类的对象在赋值时,不创建新的拷贝,只复制一个句柄,类似于C语言指针。举个例子就明白了,如下:classdef quaternion < handle properties...

2019-09-29 14:24:25 1295

原创 matlab转C语言的操作步骤(2)——同时转多个多函数+变量类型设置

如果变量类型设置错误,在转C时,会出现以下报错:Error using XX_mex (line 0)Incorrect class for expression 'studentHeight': expected 'single' but found 'double'.或者报这个错:This assignment writes a 'double' value into a 'si...

2019-09-20 10:47:42 1132

转载 Makefile学习笔记(2)-编译选项CFLAGS,LDFLAGS,LIBS:-c,-D,-o,-g,-L,-I,-Wall,-mcpu等

转载:https://blog.csdn.net/xinyuan510214/article/details/50457433/https://blog.csdn.net/cym_anhui/article/details/80639877CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。CFLA...

2019-09-16 10:28:47 517

原创 makefile学习笔记(1)- @^$符号的意义

makefile的基本用法如下,target:components ------<依赖语句>TAB rule ------<规则语句>这两行一般同时出现。第一行表示的是依赖关系,举例:某个.o目标文件依赖几个.c和.h,那么可以这么写: main.o:main.c mytool1.h mytool2.h又...

2019-09-16 09:56:50 172

原创 Keil打开工程时,解决“Loading PDSC Debug Description Failed”错误

网上搜到一个方法是,把Keil.STM32Lxxx_DFP.pdsc文件中,删除行“Message(2, "Not a genuine ST Device! Abort connection.");”,这个方法属于掩耳盗铃,只是不让他弹出错误而已。正确的解决方法是,安装与keil版本相匹配的pack包,以我自己的工程为例:我安装的keil是5.18,我下载了三个版本的pack,如下图:...

2019-09-12 11:42:26 4123 6

原创 matlab 4字节合并为float,2字节合并为uint16

例如:float a = 3.1415; 它对应的内存数据为0x40490E56,在小端架构中的内存布局为: [ 56 0E 49 40 ](HEX),也即: [ 86 14 73 64 ](DEC)。在matlab中运行结果为:再举一个例子:uint16 a = 511; 备注:511(DEC)=0x01FF(HEX)a的内存数据为0x01FF,在小段架构中的...

2019-07-18 11:47:26 1169

原创 处理定长/不定长报文的标准流程

定长报文处理起来很简单,大多通信协议的报文结构都是这样的:stc-body-check-tail,假设每帧报文长为L字节。说明:stc(start char)为报文头字符,check为校验字(和校验、CRC校验等),tail为报文尾,也可以没有尾,很多协议会把校验字当做尾。1、把收到的字节都存进fifo,并发出通知,在通知的回调中开始处理报文2、通知的回调函数:(1)从fifo中p...

2019-07-18 10:40:28 555

原创 matlab面向对象编程

网上搜到的都是些零零散散的知识点,只有官方手册才是最全面的,直接在帮助文件中搜索:“Class Definition”,点开上面的“方法(函数)method”链接,可以看到:上图中红框部分讲解了,普通函数、构造函数、静态函数等的写法。...

2019-07-16 14:37:35 102

原创 matlab转C语言的操作步骤(1)——基本操作

以求3x3矩阵的逆矩阵为例:先看看在matlab中的运行结果:文章的最后,我们会看看转换出的C语言函数,在单片机上的运行结果。新建一个.m文件(这个文件必须是函数文件,如下图所示,而不能是脚本文件。而且matlab还有要求,函数名和文件名必须一致),在.m文件中把求逆函数写好,如下:在matlab'主窗口的app中找到coder工具,如下:弹出如下界面,...

2019-06-22 17:59:32 24935 8

QT多复选框.zip

QT5.8编译通过,相关介绍请搜索我的博客《QT使用QListWidget+QChececkBox实现多选功能》,链接https://blog.csdn.net/qq_31073871/article/details/90272780

2019-05-18

jdk-6u45-linux-x64.bin

解压密码:123 从java官网下载的jdk-6u45-linux-x64.bin,官网下载需要先注册,而且下载速度较慢,就传到这里来了

2018-05-02

AU3自动发送163邮件

实现了AU3自动后台静默发送163邮件!可以用来干坏事!

2015-09-05

如何把博客代码的背景默认改为白色?

发表于 2018-07-04 最后回复 2018-09-10

c语言如何调用lua写的函数?

发表于 2018-07-31 最后回复 2018-08-01

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

TA关注的人 TA的粉丝

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