自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (1)
  • 收藏
  • 关注

转载 STM32+串口空闲中断实现不定长数据接收

常见的数据帧断帧方式有两种,一种是通过固定的协议格式断帧,另外一个是通过两帧数据的时间断帧,下面介绍最后一种,利用STM32F1的串口空闲中断实现不定长的数据断帧。笔者使用的标准官方库。空闲中断是接受数据后出现一个字节的空闲状态,就会触发空闲中断。利用该特性区分两个不同数据帧。1.初始化USART​ 按照官方的初始化流程配置,需要注意一点就是需要开启接收中断和空闲中断。/** * @brief USART初始化. * @param * @arg BaudRate 波特率 * @re

2020-05-14 16:01:11 1455

转载 STM32使用串口IDLE中断的两种接收不定长数据的方式

本文转载:https://blog.csdn.net/qq_29413829/article/details/63262321现在有很多数据处理都要用到不定长数据,而单片机串口的RXNE中断一次只能接收一个字节的数据,没有缓冲区,无法接收一帧多个数据,现提供两种利用串口IDLE空闲中断的方式接收一帧数据,方法如下:方法1:实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数

2020-05-14 15:39:46 605 1

原创 第六十七课:经典问题分析五-----狄泰软件学院

一、编写程序判断一个变量是不是指针。实例分析1:指针判断#include <iostream>#include <string>using namespace std;class Test{public: Test() { } virtual ~Test() { }};template<type...

2019-10-11 22:09:38 194

原创 第六十六课:C++中的类型识别-----狄泰软件学院

问题:C++中如何得到动态类型??解决方案:----利用多态在基类中定义虚函数返回具体的类型信息所有的派生类都必须实现类型相关的虚函数每个类中的类型虚函数都需要不同的实现实例分析1:动态类型识别#include <iostream>#include <string>using namespace std;class Base{public: ...

2019-10-10 16:32:41 111

原创 第六十二课:单例类模板----狄泰软件学院

一、需求的提出在架构设计时,某些类在整个系统生命周期中最多只能有一个对象的存在,如何定义一个类,使得这个类最多只能创建一个对象。?实例分析1;单例模式初探#include <iostream>#include <string>using namespace std;class SObject{ static SObject* c_instance;...

2019-10-09 11:20:17 132

原创 第六十一课:智能指针类模板----狄泰软件学院

一、智能指针的意义现代C++开发库中最重要的类模板之一C++中自动内存管理的主要手段能够在很大程度上避开内存相关的问题STL中的智能指针auto_ptr生命周期结束时,销毁指向的内存空间不能指向堆数组,只能指向堆对象(变量)一片堆空间只属于一个智能指针对象多个智能指针对象不能指向同一片堆空间实例分析1:auto_ptr使用初探#include <iostream&...

2019-10-09 10:30:17 106

原创 第六十课:数组类模板-----狄泰软件学院

一、预备知识有趣的面试题:用你觉得最高效的方法求:1+2+3+4+5…+N的值实例分析1:数值型模板参数#include <iostream>#include <string>using namespace std;template< typename T, int N >//< typename T, double N >//报...

2019-10-09 09:29:00 91

原创 第五十九课:类模板深度解析----狄泰软件学院

一、多参数类模板类模板可以定义任意多个不同的类型参数实例分析1:类模板的特化#include <iostream>#include <string>using namespace std;template< typename T1, typename T2 >class Test{public: void add(T1 a, T2...

2019-10-08 11:32:25 106

原创 第五十八课:类模板的概念和意义----狄泰软件学院

一、在C++中是否能够将泛型编程应用于类?类模板一些类主要用于存储和组织数据元素类中数据组织的方式和数据元素的具体类型无关如:数组类,链表类,stack类,queue类C++中的类模板以相同的方式处理不同的类型在类声明前使用template进行标识用于说明类中使用的泛指类型Ttemplate <typename T>class Operator{publ...

2019-10-07 21:58:02 124

原创 第五十七课:深入理解函数模板---狄泰软件学院

一、函数模板编译器从函数模板通过具体类型产生不同的函数编译器会对函数模板进行两次编译对模板代码本身进行编译对参数替换后的代码进行编译注意事项:函数模板本身不允许隐式类型转换自动推导类型是,必须严格匹配显示类型指定时,能够进行隐式类型转换实例分析1:函数模板本质分析#include <iostream>#include <string>using...

2019-10-07 20:36:06 99

原创 第五十六课:函数模板的概念和意义---狄泰软件学院

一、C++中有几种交换变量的方法?定义宏代码块VS定义函数实例分析1:变量的交换#include <iostream>#include <string>using namespace std;#define SWAP(t, a, b) \do \{ \ ...

2019-09-29 23:49:52 111

原创 第五十五课:经典问题分析四(new与malloc,构造函数,析构函数,虚函数,多态,dynamic_cast)---狄泰软件学院

一、new和malloc的区别是什么?delete和free的区别是什么?new关键字与malloc函数的区别new关键字是C++的一部分malloc是由C库提供的函数new一具体类型为单位进行内存分配malloc一字节为单位进行内存分配new在申请内存空间时可进行初始化malloc仅根据需要申请定量的内存空间实例分析1:new和malloc的区别#include &lt...

2019-09-29 23:12:57 229

原创 第五十四课:被遗弃的多重继承(下)---狄泰软件学院

一、多重继承的问题三实例分析1:多重继承问题3#include <iostream>#include <string>using namespace std;class BaseA{public: virtual void funcA() { cout << "BaseA::funcA()" << e...

2019-09-29 21:47:13 177

原创 第五十三课:被遗弃的多重继承(上)---狄泰软件学院

一、C++中是否允许一个类继承自多个父类?C++支持编写多重继承的代码一个子类可以拥有多个父类子类拥有所有父类的成员变量子类继承所有父类的成员函数子类对象可以当作任意父类对象使用、二、多重继承的语法规则class Derived:public BaseA, public BaseB, public BaseC{};实例分析1:多重继承问题一#include...

2019-09-29 19:54:42 113

原创 第五十二课:C++中的抽象类---狄泰软件学院

一、什么是抽象类?面向对象中的抽象概念在进行面向对象分析时,会发现一些抽象的概念,比如图形面积如何计算?在没有明确什么图形之前,并不能做到。所以对概念上的图形求面积是没有意义的。class shape{public:double area(){return 0;}};shape只是一个概念的类型,没有具体的对象。shape类有没有存在的必要?面向对象中的抽象类(...

2019-09-27 00:55:21 121

原创 第五十一课:C++对象模型分析(下)---狄泰软件学院

一、继承对象模型实例分析1:继承对象模型初探#include <iostream>#include <string>using namespace std;class Demo{protected: int mi; int mj;public: virtual void print() { cout &lt...

2019-09-26 01:43:02 123

原创 第五十课:对象模型分析(上)---狄泰软件学院

一、回归本质class是一种特殊的struct在内存中class依旧可以看作变量的集合class中的成员函数与成员变量是分开存放的(1)每个对象由独立的成员变量(2)所有的对象共享类中的成员函数实例分析1:对象内存布局初探#include <iostream>#include <string>using namespace std;class ...

2019-09-26 01:23:59 123

原创 第四十九课:多态的概念和意义----狄泰软件学院C++课程

一、多态的概念和意义面向对象中期望的行为:根据实际的对象类型判断如何调用重写函数父类指针(引用)指向(1)父类对象则调用父类中定义的函数(2)子类对象则调用子类中定义的重写函数注意:在上一课中讲到了父类子类之间的赋值兼容问题,这里根据需要复习一下第四十八课。C++语言直接支持多态的概念通过使用virtual关键字对多态进行支持被virtual声明的函数被重写后具有多态性被...

2019-09-24 00:16:59 116

原创 初探常量指针、指向常量的指针和指向常量的常指针

1 常量指针,简称常指针。int * const p常指针,从字面的意思来理解,就是指针变量所指的空间地址是常量。需要强调的是这个地址在一开始就确定为常量,那么地址不能被修改,也就是说确定了指向谁之后,不能再指向其它地址。(C++中的引用也是这个道理)。但是这个地址里面存储的内容可以被修改。#include <iostream>using namespace std;int ...

2019-09-23 15:28:43 397

原创 电路设计中上拉电阻与下拉电阻的作用

在电路设计中,我们把连接到VCC的电阻叫做上拉电阻,把连接到GND的电阻叫做下拉电阻。而在数字电路中,信息是通过数学逻辑“1”和“0”l来表示的。在模拟电路转数字电路中,我们把高电平定为“1”,低电平定义为“0”。在电路设计时如果存在未知的状态,这将对数字信息的产生不确定的因素,因此在电路设计中上拉电阻和下拉电阻可以消除这些不确定的因素。一、输入电路按键电路为例轻触开关没有按下时,电路图...

2019-09-23 15:11:15 2613 2

原创 第四十八课:同名覆盖引发的问题-----学习狄泰软件学院C++课程

一、父子间的赋值兼容子类对象可以当作父类对象使用子类对象可以直接赋值给父类对象子类对象可以直接初始化父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象实例分析:子类对象的兼容性#include <iostream>#include <string>using namespace std;class Parent{public:...

2019-09-23 00:40:08 97

原创 第四十七课:父子间的冲突------学习-狄泰软件学院C++课程

一、子类中是否可以定义与父类中的同名函数,如果可以这么区分?实例分析:同名成员变量分析#include <iostream>#include <string>using namespace std;class Parent{public: int mi;};class Child : public Parent{public: i...

2019-09-22 23:54:40 221

原创 第四十六课:继承中的构造与析构---狄泰软件学院

文章内容来源于狄泰软件学院唐老师C++课程课件一、如何初始化父类成员?父类构造函数和子类构造函数有什么关系?子类中可以定义构造函数子类构造函数(1)必须对继承而来的成员进行初始化(2)直接通过初始化列表或者赋值的方式进行初始化(3)调用父类构造函数进行初始化父类构造函数在子类中的调用方式(1)默认调用适用于无参构造函数和使用默认参数的构造函数(2)显示调用通过初始化列表进...

2019-09-21 22:08:20 108

原创 第四十五课:不同的继承方式----狄泰软件学院

文章内容来源于狄泰软件学院唐老师C++课程课件一、被忽视的细节是否可以将继承语句中的public换成protected或者private?如果可以与public继承有什么区别?实例分析:#include <iostream>#include <string>#include <sstream>using namespace std;class...

2019-09-21 21:22:59 119

原创 第四十四课:继承中的访问级别----狄泰软件学院

文章来源于狄泰软件学院唐老师C++课程课件一、子类是否可以直接访问父类的私有成员?实例分析:继承中的访问级别#include <iostream>#include <string>using namespace std;class Parent{private: int mv;public: Parent() { ...

2019-09-19 21:39:19 92

原创 第四十三课:继承的概念和意义----狄泰软件学院

文章来源于狄泰软件学院唐老师C++课程课件一、问题:类之间是否存在直接的关联关系?组合关系:整体与部分的关系实例分析:组合关系的描述#include <iostream>#include <string>using namespace std;class Memory{public: Memory() { cout &l...

2019-09-18 21:02:47 85

原创 第四十二课:类型转换函数(下)---狄泰软件学院

文章来源于狄泰软件学院唐老师C++课程课件一、类类型是否能够类型转换到普通类型?#include<iostream>#include<string>using namespace std;class Test{ int mValue;public: Test(int i=0) { mValue=i; } int value() { r...

2019-09-18 20:08:16 90

原创 第四十一课:类型转换函数(上)----狄泰软件学院

文章内容来源于狄泰软件学院唐老师C++课程课件。一、再论类型转换标准数据类型之间会进行隐士的类型安全转换转换规则如下:实例分析:有趣的隐式类型转换...

2019-09-18 19:22:50 96

原创 第四十课:前置操作符和后置操作符-----狄泰软件学院

文章内容来源于狄泰软件学院唐老师C++课程课件。一、值得思考的问题i++;i的值作为返回值,i自增1++i;i自增1,i的值作为返回值两者在实际工程没有区别。实例:#include <iostream>#include <string>using namespace std;int main(){ int i = 0; i++;...

2019-09-11 21:12:31 121

原创 第三十九课:逗号操作符------狄泰软件学院

文章内容来源于狄泰软件学院唐老师C++课程课件。一、逗号操作符逗号操作(,)可以构成逗号表达式逗号表达式用于将多个子表达式连接为一个表达式逗号表达式的值为最后一个子表达式的值逗号表达式中的前N-1个子表达式可以没有返回值逗号表达式按照从左向右的顺序计算每个子表达式的值exp1,exp2,exp3,…expN实例:逗号表达式的示例#include<iostream>...

2019-09-11 20:12:52 99

原创 第三十八课:逻辑操作符的陷进----狄泰软件学院

文章内容来源于狄泰软件学院唐老师C++课程课件。一、潜规则操作数只有两种值(true和false)逻辑表达式不用完全计算就能确定最终值最终结果只能是true或者是false二、#include<iostream>#include<string>using namespace std;int func(int i){ cout<<"in...

2019-09-07 20:21:01 93

原创 第三十七课:智能指针分析---狄泰软件

文章来源狄泰软件学院唐老师C++课程课件一、内存泄露:动态申请堆空间,用完后不归还C++语言中有没有垃圾回收的机制指针无法控制所指堆空间的生命期实例分析:内存泄露#include <iostream>#include <string>using namespace std;class Test{ int i;public: Te...

2019-08-31 18:20:25 191

原创 复习:智能指针。Pointer& operator = (const Pointer& obj)

Pointer& operator = (const Pointer& obj)

2019-08-31 18:19:20 203

原创 第三十六课:经典问题解析三----狄泰软件学院

文章内容来源于狄泰软件唐老师C++课程课件一、赋值的疑问什么时候需要重载赋值操作符编译器是否提供了默认的赋值操作?编译器为每个类默认重载了赋值操作符默认的操作符仅完成浅拷贝当需要进行深拷贝时必须重载赋值操作符赋值操作符与拷贝构造函数具有相同的存在意义#include <iostream>#include <string>using namespac...

2019-08-31 17:23:19 137

原创 第三十五课:函数对象分析----狄泰软件学院

文章内容来源狄泰软件学院唐老师C++课程课件需求:编写一个函数函数可以获得斐波拉契数列的每项值每次调用一次返回一个值函数课根据需要重复使用for(int i=0;i<10;i++){ cout<<fib()<<endl;}#include<iostream>#include<string>using namesp...

2019-08-31 10:56:09 67

转载 转载:八大排序算法

本文转载自:https://blog.csdn.net/haishu_zheng/article/details/77652757 版权声明:本文为博主原创文章,遵循...

2019-08-31 10:21:42 94

转载 转载:常用的排序算法(下)

本文转载自:https://blog.csdn.net/qq_42453117/article/details/100036347 版权声明:本文为博主原创文章,遵循...

2019-08-31 10:18:32 125

转载 转载:常用的排序算法(上)

本文转载自:https://blog.csdn.net/qq_42453117/article/details/99680831 版权声明:本文为博主原创文章,遵循 ...

2019-08-31 10:16:34 114

原创 第三十四课:数组操作符的重载----狄泰软件学院

文章内容来源于狄泰软件学院唐老师C++课程课件一、string类对象还具备C方式字符串的灵活性吗?还能直接访问单个字符吗?string类最大限度的考虑了C字符串的兼容性可以按照使用C字符串的方式使用string对象string s="a1b2c3d4e5";int n-0;for(int i=0;i<s.length();i++){ if(isdigit(s[i])) {...

2019-08-29 20:19:31 121

转载 转载:CSDN中怎么转载别人的博客

本文转载自:https://blog.csdn.net/qq_33976576/article/details/80424587 版权声明:本文为博主原创文章,遵循 ...

2019-08-29 19:42:59 106

STM32F103ZET6_UART1_IDLE中断方式接收不定长数据无DMA.zip

STM32F103ZET6串口通过IDLE中断方式接收不定长数据,无DMA。在原子开发板上测试通过。

2020-05-14

空空如也

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

TA关注的人

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