- 博客(30)
- 收藏
- 关注
原创 七、Qt多线程之QThread
关于多线程这个话题,相信大部分人都比较熟悉,但是要想深入理解多线程本质的话,多半得借助MCU以及RTOS这样的片上系统,今天就不深入展开,我们放在下一篇分析。从使用的角度,线程真的很棒很好用,特别是Qt库对多线程的封装,使得线程使用起来更加优雅,更少的代码和更简单的使用方式,今天就来详细分析qt的线程的使用方式以及应用场景等等。
2022-10-31 17:29:06 745 1
原创 六、QtC++原子操作详解
为什么要说原子操作呢,因为我下两篇将要深入分析多线程以及QT中的多线程,线程就必然涉及线程同步,举个例子,假如我们设计一个软件,一个线程负责采集传感器数据,一个线程负责将数据显示到屏幕,而采样的频率(速度)远远大于屏幕刷新速率,假如每秒采集10次,而屏幕上的数据1秒才更新一次,反正诸如这样的场景,都需要线程同步,换句话说,也可以理解为控制线程的运行顺序和运行速度。分析这么多,原子操作的使用其实很简单,如果是一次性写入以内的32字节的数据,就是原子操作,而需要先读,再写入的,就不是原子操作。
2022-10-26 12:27:51 2372
原创 GPIO详解
1 GPIO详解1.1 gpio框图与GPIO相关的寄存器,不涉及复用,简单理解就是电灯、蜂鸣器控制等,与之相关的寄存器一共有7个GPIOx_CRL(x = A..E)端口配置低寄存器GPIOx_CRH(x = A..E)端口配置高寄存器GPIOx_IDR(x = A..E)端口输入数据寄存器GPIOx_ODR(x = A..E)端口输出数据寄存器GPIOx_BRR(x = A..E)端口位清除寄存器GPIOx_BSRR(x = A..E)端口位设置/清除寄存器GPIOx_LCKR(
2022-03-09 09:43:04 14899 8
原创 STM32学习路线
1 前述对于什么是单片机什么是外设什么是时钟之类的基础问题就不在赘述,按照常规的学习路线,当然也是最容易上手的路线,就是学习标准库,基于库函数来开发,然后再学习片上系统,我自己就是,毕竟标准库这么方便,对于工作中如果你用到了STM32,那么这是最棒的选择,我将32学习理解路线分为以下几个块,如果你都理解了说明你已经入坑,但是对于学习来说,对于有追求的技术佬来说,这才刚刚开始……本系列从GPIO开始,一篇一个外设,学习标准库的源码和寄存器2 时钟树时钟树是什么树?我的理解是,时钟树其实就是一个抽象
2022-03-08 14:49:21 5792 7
原创 三、Qt常用容器之QList
1、QList介绍介绍个锤子,有点累,摊牌了,这篇是水的,但是我觉得质量很高,因为我自己写不了这么详细,对,感谢某不知名网站编程指南,我直接白嫖,这篇实在是太多了,说句实话日常使用不久存个指针,然后遍历查找之类的,怎么能写这么多!在开始讲解 QList 之前,我们先明确一下 Qt 数据容器能存储什么,不能存储什么。Qt 提供的数据容器都是模板类,构造时要带数据类型,比如下面这句定义整型数列表:QList<int> integerList;Qt 数据容器有支持的数据类型,也有不支持的类型
2022-03-04 15:13:00 19054 4
原创 二、Qt常用容器之QByteArray
1、QByteArray介绍Qt中对字符处理已经有QString,为什么还要引出QByteArray,因为QString中一个字符占两个字节,而传统的标准C/C++中Char/String都是一个字节为单位,而Qt库中是无缝兼容标准C/C++语法的,而在实际使用中,多机通信、交换数据等等都是使用QByteArray,这样才能达到跨平台,跨语言,跨设备,特别是嵌入式设备,大多采用C语言编程,自然是标准C库,Qt想与之通信就必须使用QByteArray,可以省去诸多转换麻烦。QByteArray 类可以处理
2022-03-04 14:47:07 8804
原创 五、STL常用算法
5 STL- 常用算法概述:算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数<functional>定义了一些模板类,用以声明函数对象。5.1 常用遍历算法学习目标:掌握常用的
2022-03-01 13:24:39 194 1
原创 四、STL函数对象(了解)
4 STL- 函数对象4.1 函数对象4.1.1 函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数4.1.2 函数对象使用特点:函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递示例:#include <string>//1、函数对象在使用时,可以像
2022-03-01 13:21:01 153
原创 三、STL常用容器
3 STL- 常用容器3.1 string容器3.1.1 string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和
2022-03-01 13:19:42 353
原创 二、STL初识
2 STL初识2.1 STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西C++的面向对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了STL2.2 STL基本概念STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)容器和算法之间通过迭代器
2022-03-01 13:13:21 211
原创 一、C++模板
C++提高编程本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用老实说对于这部分的前半部分,已经忘记的七七八八,在使用QT库中,QT的源码会出现比较多的模板这块,但是自己写的情况很少,但是后半部分的STL容器会非常重要,会在日常编程中频繁使用1 模板1.1 模板的概念模板就是建立通用的模具,大大提高复用性模板的特点:模板不可以直接使用,它只是一个框架模板的通用并不是万能的1.2 函数模板C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板
2022-03-01 13:09:03 209
原创 八、结构体详解
8 结构体8.1 结构体基本概念结构体属于用户自定义的数据类型,允许用户存储不同的数据类型8.2 结构体定义和使用语法:struct 结构体名 { 结构体成员列表 };通过结构体创建变量的方式有三种:struct 结构体名 变量名struct 结构体名 变量名 = { 成员1值 , 成员2值…}定义结构体时顺便创建变量示例://结构体定义struct student{ //成员列表 string name; //姓名 int age; //年龄 int sco
2022-02-28 11:25:23 210
转载 七、指针详解
7 指针7.1 指针的基本概念指针的作用: 可以通过指针间接访问内存内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址7.2 指针变量的定义和使用指针变量定义语法: 数据类型 * 变量名;示例:int main() { //1、指针的定义 int a = 10; //定义整型变量a //指针定义语法: 数据类型 * 变量名 ; int * p; //指针变量赋值 p = &a; //指针指向变量a的地址 cout <<
2022-02-28 11:21:33 324
原创 六、C++的函数
6 函数6.1 概述作用:将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。6.2 函数的定义函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式语法:返回值类型 函数名 (参数列表){ 函数体语句 return表达式}返回值类型 :一个函数可以返回一个值。在函数定义中函数名:给函数起个名称参数列表:使用该函数时,传入的数据函数体
2022-02-28 11:18:11 495
转载 五、C++的数组
5 数组5.1 概述所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个数据元素都是相同的数据类型特点2:数组是由连续的内存位置组成的5.2 一维数组5.2.1 一维数组定义方式一维数组定义的三种方式:数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例int main() { //定义方式1 //数据类型 数组名[元素个数]; int score
2022-02-28 10:17:45 235
原创 四、C++程序流程结构
4 程序流程结构C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码4.1 选择结构4.1.1 if语句作用:执行满足条件的语句if语句的三种形式单行格式if语句多行格式if语句多条件的if语句单行格式if语句:if(条件){ 条件满足执行的语句 }示例:int main() { //选择结构-单行if语
2022-02-28 10:07:13 202
原创 三、C++运算符
3 运算符作用:用于执行代码的运算本章我们主要讲解以下几类运算符:运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较,并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值3.1 算术运算符作用:用于处理四则运算算术运算符包括以下符号:运算符术语示例结果+正号+33-负号-3-3+加10 + 515-减10 - 55
2022-02-28 09:54:36 190
原创 二、C++数据类型
2 数据类型C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存2.1 整型作用:整型变量表示的是整数类型的数据C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:数据类型占用空间取值范围short(短整型)2字节(-2^15 ~ 2^15-1)int(整型)4字节(-2^31 ~ 2^31-1)long(长整形)Windows为4字节,Linux为4字节(32位),8字节(64位)(-2^31 ~ 2
2022-02-28 09:51:19 135
转载 一、C++初识
1 C++初识1.1 第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1 创建项目 Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2 创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添加即可。1.1.3 编写代码#include<iostream>using namespace std;int main() { cout << "
2022-02-28 09:43:28 407
原创 五、C++文件操作
5 文件操作程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作5.1文本文件5.1.1写文件写文件步骤如下:
2022-02-28 09:14:23 257
原创 四、C++类和对象
4 类和对象C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如: 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调… 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类4.1 封装4.1.1 封装的意义封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制
2022-02-28 09:09:41 471 1
转载 三、C++的函数
3 函数3.1 函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名 (参数= 默认值){}示例:int func(int a, int b = 10, int c = 10) { return a + b + c;}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数int func2(int a = 10, int b = 10);int func2(i
2022-02-25 18:35:13 115
原创 二、C++之引用详解
2 引用2.1 引用的基本使用**作用: **给变量起别名语法: 数据类型 &别名 = 原名示例:int main() { int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl; b = 100; cout << "a = " << a << end
2022-02-25 18:05:44 143
原创 一、C++开题总述
本篇主要是讲解C++基础语法,如果0基础入门,建议快速学个大概,有个整体框架的概念,不必把所 有东西都背下来,理解思想即可,用到时再查阅所需学习周期:看个人,培训机构一般是7~10天,自己看视频教程应该20天,并不需要高智商,我假设你读过高中,智商正常,那么从语法的层面入门大概是20天,当然30天或者60天都可以,看个人时间分配,如果从使用的角度,那就没得聊了*** 如果你学习的过程中发现你比别人学得慢,理解一个东西的时候没有别人快,不要担心,也不要怀疑自己的智商,学习并理解一样东西的速度,大部分取决.
2022-02-25 17:55:46 232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人