自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 资源 (4)
  • 收藏
  • 关注

原创 C语言-设计模式

设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。

2024-04-22 15:19:26 952 1

原创 C++11新特性:4.自动类型推导

在C++11中增加了很多新的特性,比如可以使用auto自动推导变量的类型,还能够结合decltype来表示函数的返回值。使用新的特性可以让我们写出更加简洁,更加现代的代码。

2024-04-19 18:39:53 694

原创 C++11新特性:3.常量表达式修饰符 - constexpr

在C++11之前只有const变量只读修饰常量numcountbb = a2;

2024-04-19 14:01:56 968

原创 C++11新特性:2.指针空值类型 - nullptr

在C++程序开发中,为了提高程序的健壮性,一般会在定义指针的同时完成初始化操作,或者在指针的指向尚未明确的情况下,都会给指针初始化为。这个0(0x0000 0000)表示的就是虚拟地址空间中的0地址,这块地址是只读的。出于兼容性的考虑,C++11 标准并没有对 NULL 的宏定义做任何修改,而是另其炉灶,引入了一个新的关键字。C++ 中将 NULL 定义为字面常量 0,并不能保证在所有场景下都能很好的工作,比如,函数重载时,和预期是不一样的,其实这个原因前边已经说的很明白了,在C++中。

2024-04-19 11:54:02 153

原创 C++11新特性:1.原始字面量

在C++11中添加了定义原始字符串的字面量,定义方式为:R “xxx(原始字符串)xxx”其中()两边的字符串可以省略。最后强调一个细节:在R “xxx(raw string)xxx” 中,原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且加的字符串必须在括号两边同时出现。在C++11之前如果一个字符串分别写到了不同的行里边,需要加连接符,这种方式不仅繁琐,还破坏了表达式的原始含义,如果使用原始字面量就变得简单很多,很强直观,可读性强。

2024-04-19 11:30:14 159

原创 十大滤波算法程序大全

程序默认对int类型数据进行滤波,如需要对其他类型进行滤波,只需要把程序中所有int替换成long、float或者double即可。

2024-04-11 19:02:22 279

原创 PID c++算法学习和实现

原理:在计算U(k)的时候,先判断上一时刻的控制量U(k-1)是否已经超出了限制范围。若U(k-1)>Umax,则只累加负偏差;若U(k-1)

2024-04-10 17:16:26 158

原创 两轮差速机器人运动学模型

两轮差速底盘由两个动力轮位于底盘左右两侧,两轮独立控制速度,通过给定不同速度实现底盘转向控制。一般会配有一到两个辅助支撑的万向轮。2、扫地机器人;3、无人仓AGV小车;4、轮椅;1、控制简单、里程计计算简单。2、只能给定X方向速度、Z轴方向角速度。

2024-04-10 10:40:49 1656

原创 结构型模式--3.组合模式【草帽大船团】

和。

2024-04-09 14:18:16 978

原创 结构型模式--2.桥接模式【大海贼时代】

哥尔·D·罗杰是罗杰海贼团船长。他最终征服了伟大航路,完成了伟大航路的航行,被人们成为海贼王。后来得了绝症,得知自己命不久矣,主动自首并在东海罗格镇被处刑。临死前罗杰的一句话很多人为了梦想,为了罗杰留下的宝藏竞相出海,大海贼时代就此开启。对于罗杰的行为,最不高兴的肯定是世界政府和海军了,世界政府是海贼中的最高权利机构,海军是世界政府的直属组织,他们以绝对的正义为名在全世界海洋执行维持治安工作。现在海军的最高统帅也就是海军元帅是赤犬。

2024-04-09 13:55:22 1052

原创 结构型模式--1.适配器模式【托尼托尼·乔巴】

在海贼王中,是草帽海贼团的船医,它本来是一头驯鹿,但是误食了动物系·人人果实之后可以变成人的形态。语言,此时的他,妥妥的语言学家。人和动物本来无法直接交流,但是有了乔巴的存在,就相当于了有了一条纽带,一座桥梁,使得二者之间能够顺畅的沟通。在这里边,乔巴充当的就是一个适配器,说白了,适配器模式就相当于找了一个翻译。

2024-04-09 11:34:18 719

原创 创建型模式--6.原型模式【杰尔马66】

在海贼王世界中,杰尔马王国拥有一支强大的科学作战部队 –杰尔马66军团,其先锋是文斯莫克家族,他们作为雇佣军活跃在世界各地。这支部队战斗力强悍,没有情感,不畏生死,勇往直前。从某种意义上来讲,他们不能被称之为人,因为他们是科学的结晶,他们都出自文斯莫克·伽治之手。伽治曾和海贼世界中的顶级科学家贝加庞克是同事,一起发现了血统因子,于是才有了现在这么多的杰尔马士兵,对,你没有看错他们都是被克隆出来的。从血统因子到士兵这是一个复杂而又艰辛的过程,一旦研发成功,之后的事情就是基于母体进行复制(克隆)。

2024-04-09 10:10:53 425

原创 创建型模式--5.建造者模式【卡雷拉公司】

在海贼世界中,水之都拥有全世界最好的造船技术,三大古代兵器之一的冥王就是由岛上的造船技师们制造出来的。现在岛上最大、最优秀的造船公司就是卡雷拉公司,它的老板还是水之都的市长,财富权力他都有,妥妥的人生赢家。众所周知,在冰山身边潜伏着很多卧底,他们都是成员,目的是要得到古代兵器冥王的设计图,但是很不幸图纸后来被弗兰奇烧掉了。既然他们造船这么厉害,我也来到了卡雷拉公司,学习一下他们是怎么造船的。

2024-04-08 17:17:24 830

原创 创建型模式--4.抽象工厂模式【弗兰奇一家】

在海贼世界中,位于水之都的弗兰奇一家是由铁人弗兰奇所领导的以拆船为职业的家族,当然了他们的逆向工程做的也很好,会拆船必然会造船。有一天我攒够了钱要出海,找到了弗兰奇一家,发现他们的老大跟着草帽路飞出海了,但是我还是选择相信他们的技术。根据这个表,在造船的时候需要根据不同的型号选择相应的零部件,在设计程序的时候还需要保证遵循开放-封闭原则,即添加了新型号之后不需要修改原有代码,而是添加新的代码。

2024-04-08 16:34:38 883

原创 创建型模式--3.工厂模式 【人造恶魔果实工厂2】

在上一节中,创建了一个工厂类,用于生产需要的对象,但是这种方式有一个弊端,它违反了设计模式中的在上面的工厂函数中需要生成三种人造恶魔果实,现在如果想要生成更多,那么就需要在工厂函数的switch语句中添加更多的case,很明显这违背了封闭原则,也就意味着需要基于开放原则来解决这个问题。

2024-04-08 15:28:04 254

原创 创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

在海贼王中,作为原王下七武海之一的多弗朗明哥,可以说是新世界最大的流氓头子,拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介,控制着世界各地的诸多产业,人造恶魔果实工厂就是其中之一。人造恶魔果实的最大买家是四皇之一的凯多凯多凯撒·库朗实现了解耦合便于维护对于后者,就相当于是一个加工厂,通过这个工厂我们就可以得到想要的东西,在程序设计中,这种模式就叫做工厂模式,工厂生成出的产品就是某个类的实例,也就是对象。。通过上面人造恶魔果实的例子,我们能够了解到,不论使用哪种工厂模式其主要目的都是。

2024-04-08 14:39:47 1191

原创 命名空间 - this_thread

在C++11中不仅添加了线程类,还添加了一个关于线程的命名空间std::this_thread,在这个命名空间中提供了四个公共的成员函数,通过这些成员函数就可以对当前线程进行相关的操作了。

2024-04-08 10:48:56 909

原创 C++线程的使用

当启动了一个线程(创建了一个thread对象)之后,在这个线程结束的时候(std::terminate()),我们如何去回收线程所使用的资源呢?

2024-04-08 10:30:09 534

原创 处理日期和时间的chrono库

C++11中提供了日期和时间相关的库chrono,通过chrono库可以很方便地处理日期和时间,为程序的开发提供了便利。。

2024-04-08 10:07:44 797

原创 C++线程同步之互斥锁

对于后两种情况来说,如果不做任何的人为干涉就会出现各种各样的错误数据。这是因为线程在运行的时候需要先得到CPU时间片,时间片用完之后需要放弃已获得的CPU资源,就这样线程频繁地在就绪态和运行态之间切换,更复杂一点还可以在就绪态、运行态、挂起态之间切换,这样就会导致线程的执行顺序并不是有序的,而是随机的混乱的,就如同下图中的这个例子一样,理想很丰满现实却很残酷。std::mutex互斥锁在有些资料中也被称之为互斥量,二者是一个东西。

2024-04-08 09:20:09 936

原创 创建型模式--1.单例模式【巴基速递】

/ 懒汉模式public:// = delete 代表函数禁用, 也可以将其访问权限设置为私有private:在调用函数获取单例对象的时候,如果在单线程情况下是没有什么问题的,如果是多个线程,调用这个函数去访问单例对象就有问题了。假设有三个线程同时执行了getInstance()函数,在这个函数内部每个线程都会new出一个实例对象。此时,这个任务队列类的实例对象不是一个而是3个,很显然这与单例模式的定义是相悖的。

2024-04-07 15:56:52 941

原创 设计模式三原则

我们在进行程序设计的时候,要尽可能地保证程序的可扩展性、可维护性和可读性,所以需要使用一些设计模式,这些设计模式都遵循了以下三个原则,下面来依次为大家介绍。

2024-04-03 10:48:32 931

原创 C++ UML类图

面向对象设计主要就是使用UML的类图,类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。下面基于C++这门语言给大家讲一下UML类图的画法。

2024-04-03 09:48:25 833

原创 CMake学习(下)

如果项目很大,或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个,那么这个文件相对会比较复杂,有一种化繁为简的方式就是给每个源码目录都添加一个文件(头文件目录不需要),这样每个文件都不会太复杂,而且更灵活,更容易维护。calc 目录includeincludetest2 目录可以看到各个源文件目录所需要的文件现在已经添加完毕了。接下来庖丁解牛,我们依次分析一下各个文件中需要添加的内容。

2024-03-21 20:38:23 1004

原创 CMake学习(上)

关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。在编写程序的过程中,可能会用到一些系统提供的动态库或者自己制作出的动态库或者静态库文件,cmake中也为我们提供了相关的加载动态库的命令。

2024-03-18 21:10:38 853

原创 6_怎么看原理图之协议类接口之LCD笔记

首先想一想再前几篇文章讲的协议类的前提1、双方约定好通信的协议2、双方满足一定的时序要求以上第二点又有一些要求:1)弄清2440在这个通信协议中,能设置哪些时序的值,这些值的含义是什么——2440手册2)弄清楚这块LCD的时序有什么要求,要取什么值——看LCD手册3)计算,这些值一般是以多少秒为一个时钟等。4)再将这些值写入2440相应的寄存器本篇假定2440连接LCD。

2024-03-05 20:52:26 906

原创 5_怎么看原理图之协议类接口之NAND Flash笔记

CE低电平选中,RE由高变为低(Nand flash收到RE由高变低时,马上准备数据,然后在RE的上升沿将数据发送出去),Nand flash 驱动数据到IO 0-7,在上升沿,2440取数据。具体的需要查看芯片手册。首先CE发出片选信号,CLE发出高电平,IO 0-7将命令驱动出去,WE写脉冲,在写脉冲的上升沿,Nand flash在上升沿,将IO 0-7中数据读取出来。CE选中,ALE、CLE低电平,2440 IO 0-7驱动 数据,WE写信号,Nand flash根据ALE、CLE低电平,读取数据。

2024-02-29 09:15:29 416

原创 4_怎么看原理图之协议类接口之SPI笔记

(1)NSS:从设备选择信号线,常称为片选信号线,当有多个SPI从设备与SPI主机相连时,设备的其他信号线SCK、MOIS及MISO同时并联到相同的SPI总线上,即无论有多少个从设备,都共同使用这3条总线,而每个从设备都有独立的一条NSS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选线。SPI协议使用NSS信号线来寻址,当主机要选择从设备时,把该从设备的NSS信号线设置为低电平,该从设备即被选中,即片选有效,主机便开始与被选中的从机通信。(2)SCK:时钟信号线,用于通信数据同步。

2024-02-27 20:58:30 397

原创 3_怎么看原理图之协议类接口之I2C笔记

IIC总线有多个从机设备的通信,启动一个传输时,主机先发出S信号(开始信号),然后发出8位数据。这8位数据中前7位为从机的地址,第8位表示传输的方向(0表示写操作,1表示读操作)。被选中的从机发出响应信号。紧接着传输一系列字节及其响应位。最后,主机发出P信号(结束信号)结束本次传输。I2CSCL与I2CSDA两根线需要上拉电阻,目的是让电平有确定的状态。I2C只连接I2CSCL与I2CSDA两根线,即2线制异步串行总线。发完8bit数据后,第9个电平拉低SDA为低电平。

2024-02-24 17:42:23 544 2

原创 2_怎么看原理图之协议类接口之UART笔记

3~> 2440开始发送启始位(高电平拉低),然后发送字符A(0x41,01000001),分别发送8bit数据,发送完后,将电平拉高,即停止位。1> 开始发送时,由2440将(RxD0)高电平拉低,并持续一个T的时间(为了让PC机可以反应过来),T=1/波特率;奇校验:如果传输的数据为0x41=01000001,数据区有偶数个1,于是校验位置1。偶校验:如果传输的数据为0x41=01000001,数据区有偶数个1,于是校验位置0。一般,数据为设置8位,停止位设置1位,没有校验,没有流控。

2024-02-24 16:24:06 388

原创 1_怎么看原理图之GPIO和门电路笔记

如下图:芯片输出高电平/3.3V,LED亮;当芯片输出低电平,则LED暗如下图:输入引脚,当开关闭合,则输入为低电平/0V,当开关打开,则输入为高电平/3.3V现在的引脚都是既可以做输出/也可以做输入,怎么做?做输出引脚用,则写值到某寄存器;如果做输入引脚用,则从某寄存器读值。如下图,如果想让LED等亮,则配置nLED1引脚输出低电平,灭则配置nLED1引脚输出高电平 3.3VnLED1接到2440芯片的GPF4引脚,打开芯片手册,下面为配置寄存器GFPCON,将GPF4设置为01/output。

2024-02-24 15:13:47 452

原创 I2C 应用编程

传输数据,我们需要把数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。每传输一字节数据,接收方要有一个回应信号(确定数据是否接受完成。每传输一字节数据,接收方要有一个回应信号(确定数据是否接受完成。◼ 它构造好一系列的数据,发给 I2C。个时钟用来传输回应信号。双方设备中,某个设备发送数据时,另一方怎样才能不影响。数据发送完之后,主芯片就会发送一个停止信号。数据发送完之后,主芯片就会发送一个停止信号。

2023-12-11 18:17:44 991

原创 Linux 串口应用编程

全球定位系统(Global Positioning SystemGPS)是一种以空中卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间信息。GPS主要由三大组成部分:空间部分、地面监控部分和用户设备部分。GPS系统具有高精度、全天候、用广泛等特点。太空卫星部分由多颗卫星组成,分成多个轨道,绕行地球一周约 12小时。每个卫星均持续发射载有卫星轨道数据及时间的无线电波,提供地球上的各种接收机来应用。

2023-11-20 22:23:02 340

原创 多线程编程

有关多线程的创建流程如图 9.14所示,首先需要创建线程,一旦线程创建完成后,线程与线程之间会发生竞争执行,抢占时间片来执行线程逻辑。在创建线程时候,可以通过创建线程的第四个参数传入参数,在线程退出时亦可传出参数被线程回收函数所回收,获取到传出的参数。

2023-11-19 20:44:53 146

原创 网络编程TCP/UDP通信

所以,在网络传输中需要使用“IP 和端口”来表示源或目的。在一般的网络书籍中,网络协议被分为 5 层,如图此函数用于创建一个套接字。⚫ domain 是网络程序所在的主机采用的通讯协族(AF_UNIX 和 AF_INET 等)。 ◼ AF_UNIX 只能够用于单一的 Unix 系统进程间通信,而 AF_INET 是针对 Internet 的,因而可以允许远程通信使用。 ⚫ type 是网络程序所采用的通讯协议(SOCK_STREAM,SOCK_DGRAM 等)。

2023-11-16 21:55:34 643

原创 输入系统应用编程

⚫先来了解什么是输入设备?常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与 Linux系统进行数据交换。⚫什么是输入系统?输入设备种类繁多,能否。

2023-11-06 21:32:00 134

原创 交叉编译程序:以 freetype 为例

系统目录:就是交叉编译工具链里的某个 include 目录;也可以自己指定:编译时用。如果你编译的是一个库,请把得到的头文件、库文件放入工具链的 include。你需要在头文件目录中确定有没有这个文件,或是自己指定头文件目录。系统目录:就是交叉编译工具链里的某个 include。系统目录:就是交叉编译工具链里的某个 lib。◼ 系统目录:就是交叉编译工具链里的某个。对于尖括号里的头文件,去哪里找它?也可以自己指定:编译时用 “◼ 也可以自己指定:链接时用。,你编译出库文件时,可以把它放入系统库目录。

2023-11-05 16:13:23 236

原创 LCD驱动程序——Framebuffer应用编程

这意味着 Framebuffer 就是一块内存,里面保存着一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值,假设 LCD 的分辨率是 1024x768,每一个像素的颜色用 32 位来表示,那么 Framebuffer 的大小就是:1024x768x32/8=3145728 字节。在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。控制器的时序、信号极性;

2023-11-01 21:41:53 250

原创 文字的编码

是“American Standard Code for Information Interchange”的缩写,美国信息交换标准代码。电脑毕竟是西方人发明的,他们常用字母就 26 个,区分大小写、加上标点符号也没超过 127 个,每个字符用一个字节来表示就足够了。**一个字节的 7 位就可以表示 128 个数值,在 ASCII 码中最高位永远是 0**。

2023-10-30 21:57:16 118

原创 Linux常用命令

Shell 的意思是“外壳”,在 Linux 中它是一个程序,比如/bin/sh、/bin/bash 等。它负责接收用户的输入,根据用户的输入找到其他程序并运行。比如我们输入“ls”并回车时,shell 程序找到“ls”程序并运行,把结果打印出来。Shell 有很多种实现,我们常用 bash。

2023-09-10 23:04:22 228

WifiAdbTools

WifiAdbTools

2024-02-27

南邮通达电子电路课程设计实验报告拨号按键电路

南邮通达电子电路课程设计实验报告拨号按键电路

2022-03-12

南邮通达脉冲按键拨号电路

南邮通达 电子电路课程设计 脉冲按键拨号电路 protected仿真电路

2022-03-12

基于8155的8LED显示温度控制器设计

8、 温度控制类 基本要求: 1 用18B20或AD590温度传感器作温度探头,采集温度数据并转换成BCD码在数码管或LCD上显示。 2 记录间隔可任意设定(1S到1h,步长1s),能按设定时间存储数据。 3 通过键回放温度和记录时间参数。 发挥部分: 1 通过DA回放数据(直方图),用模拟示波器显示。 2 设定温度告警门限。 3 通过声、光告警显示。 动态显示格式: 自定

2022-03-12

基于单片CPU的8LED显示函数信号发生器设计

函数信号发生器类 基本要求: 1 用存储器或算法得到信源。 2 用DA转换器输出一函数信号(正弦、方波、三角、锯齿等,频率1000Hz),可以用示波器进行波形观察。 3 用数码管或LCD显示输出参数。 4 用功能键切换各信号的输出。

2022-03-12

空空如也

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

TA关注的人

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