- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 STM32的SPI模式读写FLASH芯片全面讲解
SPI协议简介SPI协议,即串行外围设备接口,是一种告诉全双工的通信总线,它被广泛地使用在ADC,LCD等设备与MCU间通信的场合。SPI信号线SPI包含4条总线,分别为SS,SCK,MOSI,MISO.作用如下:1) SS:片选信号线,当有多个SPI设备和MCU相连时,每个设备的这个片选信号线是与MCU单独的引脚相连的,而其他的SCK,MOSI,MISO线则为多个设备并联到相同的SPI总线上,当SS信号线为低电平时,片选有效,开始SPI通信.2) SCK:时钟信号线,由主通信设备产
2022-02-01 21:13:48 4398
原创 3.9map/multimap容器
3.9.1map基本概念简介:map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现优点:可以根据key值快速找到value值map和multimap区别:map不允许容器中有重复key值元素 multimap允许容器中有重复key值元素3.9.2 map构造和赋值#include <iostream&
2021-12-01 19:59:23 1076
原创 UART和SPI简介
UART 即通用异步收发器,是一种通用的串行、异步通信总线,该总线有两种数据线,可以实现数据的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。通信基础-并行和串行并行通信串行通信单工通信双工通信半双工:发送和接收不可以同时进行全双工:发送和接收可以同时进行波特率:波特率是用于描述UART通信时的通信速度,其单位为bps,即每秒钟传送的bit的数量(位)(不是字节)UART帧格式校验位可有可无硬件连接...
2021-11-26 19:23:32 8573
原创 3.8set/multiset容器
3.8.1set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现set和multiset区别:set不允许容器中有重复的元素 multiset允许容器中有重复的元素3.8.2 set构造和赋值功能描述:创建set容器以及赋值构造:set<T> st; //默认构造函数 set(const set&st); //拷贝构造函数赋值:set& operat...
2021-11-24 21:59:50 158
原创 modbus通讯协议详解
1.Modbus协议简介 Modbus协议是一种广泛应用于当今工业控制领域的通用通信协议。通过此协议,控制器相互之间、控制器相互之间、火控制器经由网路(如以太网)可以和其他设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用...
2021-11-20 19:01:13 14520
原创 3.7list容器
3.7.1list基本概念功能:将数据进行链式存储链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表是由一系列的结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表下图是链表基础list的优点:采用动态存储分配,不会造成内存浪费和溢出 链式执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素list缺点:链表灵活,但是空间(指针域)和..
2021-11-20 19:00:28 392
原创 3.5stack容器
3.5.1stack基本概念概念:stack是一种先进后出的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为--入栈 push栈中弹出数据称为--出栈 pop3.5.2 stack常用接口功能描述:栈容器常用的对外接口#include <iostream>using namespace std;#include<stack>//栈容器 void test01(){ //符合先..
2021-11-18 18:46:16 1266
原创 3.3deque容器
3.3.1deque容器基本概念功能:双端数组,可以对头部进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度会比vector快 vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理deque内部有个中控器,维护每段缓冲区中的内容,缓存区中存放真实数据中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间deque容器..
2021-11-17 21:35:12 204
原创 3.2 vector容器
3.2.1vector基本概念功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态拓展动态拓展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器的迭代器是支持随机访问的迭代器3.2.2 vector构造函数功能描述:创建vector容器函数原型:vector<T> v; ...
2021-11-15 16:26:41 1011
原创 3.1 string容器
3.1.1string基本概念本质:string是c++风格的字符串,而string本质上是一个类string和char*区别char*是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器特点:string类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete,替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,但类内部进行负责3.1.2string构造函
2021-11-12 21:58:59 95
原创 2 STL初识
2.1 STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL2.2 STL的基本概念STL标准模板库STL从广义上分为:容器 算法 迭代器容器和算法之间通过迭代器进行无缝连接STL几乎所有的代码都采用了模板类或者模板函数2.3 STL六大组件STL大体分为六大组件,分别是:容器、算法、迭代器、仿
2021-11-09 13:10:07 139
原创 1.3类模板
1.3.1类模板语法类模板作用:建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表语法:template <typename T>类#include <iostream>using namespace std;#include<string>template <class stringName,class intName>class Person{public: Person(strin.
2021-11-05 17:21:26 116
原创 1.2函数模板
c++另一种编程思想为泛型编程,主要利用的技术就是模板 c++提供两种模板机制:函数模板和类模板1.2.1函数模板语法函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制订,用一个虚拟的类型来代表语法:template<typename T>函数声明或定义解释:template---声明创建模板typename---表面其后面的符号是一种数据类型,可以用class代替T--通用的数据类型,名称可以替换,通常为大写字母...
2021-11-02 16:53:59 80
原创 5 文件操作
程序运行时产生的数据属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化c++对文件操作需要包含头文件<fstream>文件类型分为两种文本文件 --文件以文本的ASCII码形式存储在计算机中 二进制文件--文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作 ifstream:读操作 fstream:读写操作5.1文本文件5.1.1写文件写文件步骤1.包含头文件#inc...
2021-10-27 14:56:03 246
原创 4.7 多态
4.7.1 多态的基本概念多态是c++面向对象三大特性之一多态分为两类静态多态:函数重载 和运算符重载属于静态多态 复用函数名 动态多态:派生类和虚函数实现运行时多态静态多态和动态多态区别静态多态的函数地址早绑定-编译阶段确定函数地址 动态多态的函数地址晚绑定-运行阶段确定函数地址#include <iostream>using namespace std;//多态的基本概念class Animal{public: //虚函数 virtual void s
2021-10-27 09:28:21 83
原创 4.6 继承
我可太喜欢 是重点却不是难点的文章了继承是面向对象的三大特性之一4.6.1 继承的基本语法#include <iostream>using namespace std;//普通实现页面//java页面class BasePage{public: void header() { cout << "首页、公开课、登录、注册...(公共部分)" << endl; } void footer() { cout << "帮助中
2021-10-24 16:16:59 94
原创 4.5 运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型4.5.1 加号运算符重载作用:实现两个自定义数据类型相加的运算
2021-10-23 12:57:20 66
原创 4.4 友元
目的:让一个函数或者类访问另一个类中私有成员友元关键字:friend友元的三种实现:全局函数做友元 类做友元 成员函数做友元4.4.1 全局函数做友元#include <iostream>using namespace std;#include<string>class Building{ //GoodGay全局函数是Building好朋友,可以访问Building 中的私有成员 friend void GoodGay(Building *bui
2021-10-21 13:07:34 60
原创 4.3 c++对象模型和this指针
4.3.1成员变量和成员函数分开存储在c++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上#include <iostream>using namespace std;//成员变量 和 成员函数 分开存储class Person{ int m_A;//非静态成员变量 属于类的对象上 static int m_B;//非静态成员变量 不属于类的对象上 void func() { }//非静态成员函数 不属于类的对象 static vo
2021-10-20 21:49:20 56
原创 2.引用摘抄自黑马
目录2.1 引用的基本使用2.2 引用的注意事项2.3引用做函数参数2.4 引用做函数返回值2.5 引用的本质2.6 常量的引用2.1 引用的基本使用作用:给变量起别名语法:数据类型 &别名=原名2.2 引用的注意事项1.引用要进行初始化2.引用一旦初始化,就不可以更改了#include <iostream>using namespace std;int main(){ int a = 10; //1.引用必须初.
2021-10-20 20:51:38 62
原创 4.2对象的初始化和清理
4.2 对象的初始化和清理手机出厂设置,删除信息c++的每个对象都会有初始设置,以及对象销毁前的清理数据的设置4.2.1 构造函数和析构函数对象的初始化和清理是非常重要的安全问题构造函数和析构函数则来解决上述问题,这两个函数会被编译器自动调用,完成对象的初始化和清理工作。如果我们不提供构造和析构函数,编译器会提供,编译器提供的构造和析构函数是空实现。构造函数:在创建对象是为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。构造函数语法:类名(){} ...
2021-10-20 13:20:56 73
原创 4.1类和对象--封装
c++面向对象的三大特性:封装、继承、多态万事万物都皆为对象,对象上有其属性和行为4.1封装4.1.1封装的意义封装是面向对象的三大特性之一封装的意义: 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制封装意义一: 在设计类的时候,属性和行为写在一起,表现事物语法 class 类名{ 访问权限 :属性/行为};#include <iostream>using namespace std;...
2021-10-16 18:43:26 337 1
原创 C++核心编程——内存分区模型
C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等栈区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程程序运行前:在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域代码区: 存放CPU执行的机器指令...
2021-10-15 20:32:56 68
STM32ZET6+MODBUS通信协议
2022-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人