自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Xm行墨的博客

在寻求真理的长河中,唯有学习,不断地学习,勤奋地学习,有创造性地学习,才能越重山跨峻岭。

  • 博客(52)
  • 资源 (6)
  • 收藏
  • 关注

原创 clang-format格式化工程代码

zClang-Format最近在考虑团队代码风格的问题,无意间发现了一个代码格式化神器“clang-format”工具在了解clang-format工具之前,我们先来了解一下什么是clang,什么是LLVM,什么是GCC,什么又是GNUGNU从百度百科上可以看到,GNU是一个类unix操作系统,其内容软件完全以GPL协议发布。全称GNU’s Not UnixGCCGCC是一套基于GNU系统开发的编译器,目前支持编译 C, C++, Objective-C,Fortran, Ada, Go, D

2021-08-08 19:52:25 1192

原创 IAR下载算法制作

IAR下载算法制作 作者 Lucas 时间 2020-12-06 17:06:18 摘要本文档主要介绍如何在IAR环境下制作QSPI下载算法。本文使用到的硬件、软件如下编译器:IAR 8.32单片机:STM32H750VBT6外部Flash:W25Q64背景我们为什么需要下载算法,下载算法是在哪里使用的?这是我们首先需要了解的问题。如上图所示,我们想通过C-SPY将固件直接下载到Flash是不被允许的,那我们怎么才能实现将固件下载进Flash呢?IAR官方文档《FlashLoa

2020-12-06 20:03:02 3398 17

原创 FMCW-距离估计

距离估计FMCW雷达工作原理如上图所示,圈1是一个信号产生器,用于产生一个线性调频脉冲信号(频率随时间义线性方式增长的正弦波),经圈2发射天线发送出去,并且和圈3接收到的回波信号与圈4处进行混频,得到咱们想要的中频信号。推导如下:假设信号起始频率位f0f_0f0​,带宽为BBB,斜率为S=BTcS = \frac B{T_c}S=Tc​B​发射信号的频率可以表示为 f=f0+S∗tf = f_0 + S*tf=f0​+S∗t 因此相位可以表示为ϕ=f0∗t+12St2\phi = f_0*t

2020-12-06 15:29:39 2253

转载 实战篇 | 基于freeRTOS的多任务事件传输demo(附代码)

之前分享了很多关于freeRTOS的知识,那么我们怎么在实战中去写代码呢?本篇文章重在对基于freeRTOS的架构代码的解析。整个功能如下图: 为什么要用freeRTOS 在实际项目中,如果程序等待一个超时事件,传统的无RTOS情况下,就只能在原地等待而不能执行其它任务,如果使用RTOS,则可以很方便的将当前任务阻塞在该事件下,然后自动去执行别的任务,这样可以高效的利用CPU了。 一般使用情...

2020-09-16 14:38:27 1956

原创 git服务器(gitea)安装说明

需要用到的软件需要用到的软件有gitea-1.12.3-windows-4.0-amd64.exenssm.exeGit-2.28.0-64-bit.exe这些软件的具体功能在后面安装的时候会提及。软件都已经放到了“软件包”文件夹中。安装步骤安装git本文档既然为git服务器的安装,那肯定必须要先为电脑安装git。双击运行“Git-2.28.0-64-bit.exe ”由于我这边是使用Vscode来执行git操作的,所以我在安装过程中,选用VSC作为Git的默认编辑器(根据自己的应用

2020-08-03 18:14:50 2982 2

转载 VS2013(Visual Studio 2013)官方中文旗舰版安装激活方法

dio 2013旗舰版。VS2013(Visual Studio 2013)官方中文旗舰版安装激活方法1、下载后得到的是ISO文件,直接解压缩或用虚拟光驱加载运行都可以2、无所不藏在这里直接解压,然后双击“vs_ultimate.exe”开始安装;3、设置好安装路径后,点击“我同意许可条款和条件”点击“下一步”继续;4、选择您要安装的Visual Studio 2013选项,根据自身需要勾选安装;5、接下来就是有点漫长的安装过程,这时候就是拼电脑配置的时候了;6、成功安装后打开软

2020-05-30 17:14:52 2549

原创 基于STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM

目录总体介绍栈区(stack)堆区(heap)全局区(静态区).bss段.data段常量区代码区RAM和ROM、Flash Memory的物理特性RAMROMFlash Memory不同数据的存放位置Keil 的Build Output窗口总体介绍在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态...

2019-11-11 23:28:48 6165 4

原创 嵌入式Linux学习2——Linux常用指令2

目录touch:touch命令用来创建空文件。cp:cp命令用来复制文件或目录。rm:rm命令用于删除一个文件或者目录。mkdir:用于创建文件夹。mv:mv命令用来为文件或目录改名、或将文件或目录移入其它位置。ifconfig:ifconfig命令用于显示或设置网络设备。reboot:reboot命令用于用来重新启动计算机。poweroff:powerof...

2019-11-03 14:23:37 463

原创 嵌入式Linux学习1——Linux常用指令1

写在前面:Linux本系列的所有学习内容都是我在购买“正点原子Alpha Linux开发板”后,根据官方提供的资料 整理而来。后面将不再做介绍。目录ls:用于显示当前目录下的内容。-a:显示当前目录下的全部内容,包括隐藏文件。-i:显示当前目录下文件的详细信息。cd:cd命令用于切换当前工作目录至目标目录。pwd:pwd命令可以得知目前所在的工作目录的绝...

2019-11-03 00:36:26 624

原创 QT多线程的使用(moveToThread方法)

QT有两种实现多线程的方法,一种是“子类化QThread,然后去重写run函数,实现多线程”。一种是“子类化QObject,然后使用moveToThread函数实现多线程”。由于QT官方推荐使用第二种方法,所以我这里主要介绍一下,如何通过子类化QObject去实现多线程。首先,我们写一个继承QObject的类,并且在第一行写上Q_OBJECT,在定义一个子线程实现功能的函数。thread.h代...

2019-08-28 16:28:52 36056 15

原创 QT绘图控件QWT的安装及配置

1、QWT库下载解压下载的压缩包,我们可以看到里面包含多个文件夹,有源码、有参考程序、有说明文档等等,有时间建议把参考程序都看一下,这样都每个控件有什么功能都很熟悉。2、QWT编译网上介绍QWT编译有两种方式,一种是使用命令行编译、一种是使用Qt Creator编译。我再刚刚开始学习编译的时候,我也采用了图形化的编译方法,也就是采用Qt Creator进行编译,但是编译完成过后,不...

2019-08-28 12:39:34 728

原创 C语言 volatile的作用与使用场景

今天完成公司的任务,突然想起来在调试过程中遇到了一个问题是这样的:“我在主函数里面写了一个while(x)的循环,想在中断里面去改变这个变量x,以达到主函数里面退出while循环的目的。但是结果并不是这样的,我的代码一直停在了while循环里面。后面我咨询了一位大哥,然后他告诉我在变量i前面加上一个volatile。果然,代码运行和我的预期一样了”。代码如下void main(){ ...

2019-08-07 17:30:57 2979 2

转载 (转)跟我一起写 Makefile(一)(陈皓)

本问转载自陈皓大神的跟我一起写 Makefile(一)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件...

2019-07-25 13:34:33 280

原创 VSCode搭建ARM(STM32开发环境)

目录需要用到的工具软件安装下载安装 Visual Studio Code下载安装 STM32Cubemx下载安装 ARM GCC交叉编译工具链下载安装 Msys2下载安装 OpenOCD下载安装 Make开发环境配置msys2_shell.cmd作为VSCode的终端生成Makefile工程VsCode下编译工程安装C/C++插件添加...

2019-07-21 15:03:06 20768 12

原创 union(联合体、结构体)的简介与使用

以前在学习C语言或C++的时候,只学习了一些常用的语法。对于一些少见的本着后面遇到了再来学的目的,就没有去学习过。今天早上看群里面有人问,float怎么转换为4个字节。我一想,这不是我以前做协议解析时候的问题吗,当时我是用指针强制转换的方法去实现的。方法就像下面那代码片段一样。//转换float数据到字节数组unsigned char i;float floatVariable;u...

2019-05-25 15:26:30 34317 18

原创 Linux minicom 软件退出方法

当咱们在使用终端输入 minicom 进入传输时,是无法直接退出的,需要使用以下方法退出。1) 需使用Ctrl+a 进入设置状态2)按z进入设置菜单(1)S键:发送文件到目标系统中;(2)W键:自动卷屏。当显示的内容超过一行之後,自动将後面的内容换行。这个功能在查看内核的啓动信息时很有用。(3)C键:清除屏幕的显示内容;(4)B键:浏览minicom的历史显示;(5)X键:...

2018-12-18 22:39:39 7089

原创 OpenWRT 随记

make menuconfig                                                     对编译内容进行选择openwrt/bin/ramips/                                                 OpenWRT固件位置openwrt/bin/ramips/packages/           ...

2018-12-18 22:15:06 258

原创 C++——多态

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。#include <iostream> using namespace std; class Shape { protected: int width, height; pub...

2018-12-11 21:49:43 157

原创 C++——重载运算符和重载函数

重载运算符和重载函数C++ 中的函数重载C++ 中的运算符重载C++ 一元运算符重载C++ 二元运算符重载C++ 关系运算符重载C++ 输入/输出运算符重载C++ 赋值运算符重载C++ 函数调用运算符 () 重载C++ 下标运算符 [] 重载重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重...

2018-12-11 21:33:24 684 1

原创 C++——继承

目录继承基类 & 派生类访问控制和继承继承类型多继承继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为...

2018-12-10 20:35:30 144

原创 C++——static

类的静态成员我们可以使用static关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化...

2018-12-08 20:42:55 132

原创 C++——this指针

this指针在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。#include <iostream> using namespace std; class Box{ p...

2018-12-08 19:18:45 217

转载 ser2net安装使用说明

一安装命令:sudo  apt-get      install     ser2net 二安装成功后:wzz@debian:/etc$   whereis  ser2netser2net: /usr/sbin/ser2net     /etc/ser2net.conf      /usr/share/man/man8/ser2net.8.gz 三配置文件:vim ...

2018-12-08 16:28:32 6708 3

原创 C++——友元函数&内联函数

友元函数类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend,如...

2018-12-07 23:55:15 10094 4

原创 C++——拷贝构造函数

拷贝构造函数拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象。 复制对象把它作为参数传递给函数。 复制对象,并从函数返回这个对象。 #include <iostream> using namespace std; clas...

2018-12-07 23:25:01 195

原创 C++——构造函数&析构函数

目录类的构造函数普通构造函数带参数的构造函数初始化列表来初始化字段类的析构函数类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。普通构造函数#include <iostream>using...

2018-12-07 23:00:38 144

原创 C++——类访问修饰符

类访问修饰符数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。共有成员(public)公有成员在程序中类的外部是可访问的。可以不使用任何成员函数来设置和获取公有变量的值#in...

2018-12-07 22:19:29 568

原创 51单片机 自动重装载值计算

单片机在不同的方式下,有不同的最大值。咱们现在针对单片机的方式1,设最大值为M。那么M的值应该是:M=2^16 = 65535因为定时器是在一直加1计数的,并且在达到并且超过M的值的时候产生一个中断,因此咱们的初值可以这样定义:X=M-计数值何为计数值。可以这样理解,我们如果想定时1ms,那么在这1ms内,计数值就是单片机定时器一直加1的次数(加了多少个1)。 在举一个具体...

2018-11-23 00:36:55 9530 3

原创 C++——指针2

指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:int **var#include <iostream.h>...

2018-11-18 16:50:42 208

原创 C++——指针

int *ip; /* 一个整型的指针 */double *dp; /* 一个 double 型的指针 */float *fp; /* 一个浮点型的指针 */char *ch; /* 一个字符型的指针 */在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。NULL ...

2018-11-17 01:48:52 245

原创 51单片机创建工程操作流程

  下一篇文章,分享如何使用官方下载软件,下载程序。~!!!!!!!!!

2018-11-06 13:19:37 5347 1

转载 钳位二极管的工作原理

转载自:https://www.sohu.com/a/149371732_464086 说起二极管,大家无人不知无人不晓,那你知道什么是钳位二极管吗?也许就没几个人知道了,你知道钳位二极管的应用吗?更没几个人知道。今天就来侃侃钳位二极管!一什么是钳位二极管钳位的意思就是把位置卡住,在电路中就是限制电压,英文名:Clamp diode。是把输入电压变成峰值钳制在某一预定的电平上的...

2018-10-26 16:13:12 35487 7

转载 STM32 Flash读写;Flash地址对应的存储内容及方式;

概念:计算机中最小的信息单位是bit,也就是一个二进制位,8个bit组成一个Byte,也就是1个字节,1个存储单元存放1个字节,每个存储单元对应一个32位(bit)地址,所以重要的话说三遍:对于32bit的ARM CPU一个32位地址指向1个字节!!!  一个32位地址指向1个字节!!!   一个32位地址指向1个字节!!!我们常说的flash空间,多少多少K,指的是多少多少K byt...

2018-08-22 16:32:43 4206

转载 http请求 get 与 post 区别

前几天工作中,所有表单我都采用post方法,头儿说那样不好,大型网站上一般都采用get方法,不理解。在网上摘到一段比较有用的话 减低服务器流量压力根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来...

2018-08-21 15:40:54 185

转载 一阶互补滤波

基于一阶互补滤波算法的MPU6050数据融合我们已经知道,MPU6050可以获得加速度和角速度,但是由于传感器的噪声信号比较大,无法直接通过两个数据来获得该轴上的角度。因此,需要进行互补滤波来近似得到一个比较准确的角度。传感器原始数据特点分析:加速度数据,不是很准确,但是趋势是对的,通过受力分能够显示角度变化趋势,在长期变化来看是可以利用的。 角速度数据,加速度积分得到角度,但是由于传感器误差,积...

2018-07-14 16:44:54 4332

转载 一阶低通滤波算法

1. 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 一阶低通滤波的算法公式为:                         Y(n)=αX(n) (1-α)Y(n-1)   式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。 一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,...

2018-07-12 16:33:11 7570 1

转载 STM32如何查看Flash和RAM使用空间以及如何压缩RAM的使用空间

KEIL编译完成后,在Build Output窗口会出现一下信息:Code是代码占用的空间;RO-data是 Read Only 只读常量的大小,如const型;RW-data是(Read Write) 初始化了的可读写变量的大小;ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化;简单的说就是在烧写的时候是FLASH中...

2018-05-27 18:06:02 2315

原创 关于modbus温湿度传感器,IIC热成像仪相关知识点总结

Modbus协议(工业级温湿度传感器)Modbus协议两种传输方式:ASCII 模式:RTU   模式:温湿度传感器的数据格式IIC协议(热成像仪AMG8833)IIC协议的四种基本信号的时序图及程序void IIC_Start(void){ SDA_OUT(); IIC_SDA=1; delay_us(5);

2018-05-25 13:43:21 2091

转载 双向链表及其用法

转载自:https://blog.csdn.net/fk5431/article/details/45072935一、双向链表的定义双向链表也是链表的一种,它每个数据结点中都有两个结点,分别指向其直接前驱和直接后继。所以我们从双向链表的任意一个结点开始都可以很方便的访问其前驱元素和后继元素。二、双向链表的存储结构双向链表也是采用的链式存储结构,它与单链表的区别就是每个数据结点中多了一个指向前驱元素...

2018-05-25 13:40:46 15473 1

转载 STM32中断优先级

转载自 : https://blog.csdn.net/macmacip/article/details/54179206一:综述STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。二:优先级判断STM32(Cortex-M3)中有两个优先级的...

2018-05-22 23:46:37 310

Keil2 集成开发环境

Keil2 集成开发环境

2018-11-17

STM32 溶解氧加放大 AD采样

用STM32RET6编写的一个溶解氧数据经信号放大模块以后,用AD采样的程序,实测可以使用,具体性能可以再优化,代码后期继续上传。

2018-05-25

STM32 低功耗烟雾传感器

用STM32RET6编写的一个低功耗烟雾传感器程序,实测可以使用,具体性能可以再优化,代码后期继续上传。

2018-05-25

指令控制继电器,温湿度传感器DHT11信息的传输

本文使用STM32编写,实现了指令控制继电器,温湿度传感器DHT11的信息传输,代码已经测试了,可以使用

2018-01-10

水下机器人(潜艇STM32源码)

本代码是当时水下机器人做的一个项目,实测代码可以用。如有不足之处,请与作者联系。

2018-01-03

简易计算器源码

QT 计算器 源码

2017-08-20

空空如也

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

TA关注的人

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