当前位置: 首页 > news >正文

嵌入式学习笔记——认识STM32的 GPIO口

寄存器开发STM32GPIO口

  • 前言
  • 认识GPIO
    • GPIO是什么
    • GPIO有什么用
    • GPIO怎么用
      • STM32上GPIO的命名以及数量
      • GPIO口的框图(重点)
        • 输入框图解析
          • 三种输入模式
          • GPIO输入时内部器件及其作用
            • 1.保护二极管
            • 2.上下拉电阻(可配置)
            • 3.施密特触发器
            • 4.输入数据寄存器(内核直接通过它读取IO口高低电平)
        • 输出框图解析
          • 输出的三种模式
          • GPIO输出时内部器件及其作用
            • 1.输出控制电路(可编程控制)
            • 2.通用输出寄存器(内核直接输出高低电平到它)
    • 小结
      • 举例练习
  • 总结
    • 本文重点

前言

前面啰啰嗦嗦写了一大堆,从本文开始,正式进入STM32的实际开发过程,此系列选用寄存器开发,从最底层操作,通过查看手册配置寄存器来实现对应的功能,整个过程记录下来会显得有些臃肿,全文结构大概是前面部分介绍理论知识,后半部分介绍实操以及代码。笔者尽量做的简洁点,文中如有不足,希望各位提出指正。

认识GPIO

GPIO是什么

首先,我们需要知道GPIO是个什么东西,对于这种问题,咱还是老套路,先问问“C知道”。
在这里插入图片描述
感觉说的不够清楚,我们再看看百度百科的回答。
GPIO(英语:General-purpose input/output),通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。
既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。
嗯,看了百度解释,想必学过51系单片机或者其他系单片机的同学已经有了一个大致答案,功能和51的P0-P3类似,做输入、输出或输入输出都做,那他肯定就是和51单片机差不多引脚了吧。
对于没学过其他系单片机的同学可能还是一头雾水,我知道你很懵但你先别懵,我给你个答案,
通俗来讲,GPIO就是STM32上的大部分引脚,就是如下图所示红圈里的大多数。
在这里插入图片描述
注意提取关键字,我说的是大多数,并不是说所有,这就说明二者不能打等号。

不全是
GPIO
引脚

那么这二者有什么区别呢,我们再看一张图,这个图具体标注了上面的芯片每个脚对应的名称。
在这里插入图片描述
细细观察,这里面的脚似乎还挺有规律
1.大部分是PA0-15,PB0-15…PE0-15这部分就是上面说到的GPIO,也就是说,STM32中PXX这种标号的就是GPIO口,他们可以做输入、输出也可以既做输入又做输出;
2.剩下一大部分是VDD、VSS、VREF、VDDA、VSSA这些,这部分在昨天的硬件介绍中提到了,就是STM32的各类电源组,他们是为整个单片机提供能源输入的接口;
3.还有NRST、BOOT0这些就是昨天最小系统中写到的引脚。
好了,到这儿,我们对GPIO是什么有了一个概念,接下解决第二个问题

GPIO有什么用

还是看个图吧,我们知道STM32内部有着各种各样的片内外设,GPIO也是片内外设的一种但是他与其他片内外设有着一个很大的区别,从下图可以看出,GPIO的位置在整个芯片的外围,只有它能够和外界接触,整个芯片的所有片上外设以及内核要和外部传递交换信息都必须经过GPIO才能实现,他是连接单片机内部和外部的通道,它既可以将内核以及其他片内外设的信息传递出来(输出),也可以将片外外设的信息传递给内核或者片内外设(输入),有时候兼顾输入输出的功能。
在这里插入图片描述
好了,关于GPIO有什么用,我们也有了基本的认知,接下来,我们需要搞定今天的重点内容,怎么用。

GPIO怎么用

在探究怎么用之前,还需要补充一点STM32上有关GPIO的相关内容:

STM32上GPIO的命名以及数量

关于STM32上GPIO命名以及数量的问题,这个之前在芯片手册那一段有提到过。
GPIO的端口号是从PA、PB——PI;一共9个端口号,每个端口号上有0-15共16个管脚号,也就是说,理论上一块STM32单片机有着16*9=144个GPIO。
看到这,有的同学会有问题,你数理论上有144个GPIO,可是你上面的这个STM32F407VE就只有100个脚,而且还有那么多是电源和最小系统的专用脚,你这前后不对啊。
是的,我们的F407VE确实没有144个GPIO,还记得我们之前在芯片命名处做过介绍吗,根据命名的不同,芯片引脚数量是不一样的,这中间省略掉的就是GPIO的数量。144个GPIO对于大多数项目来说太多了,造成了资源浪费。这也是为什么芯片型号如此丰富的原因了,我们在项目中选择主控一定要注重适用性。
这里我们再拿STM32F407VE的芯片手册图来做个细致介绍,如下图所示:
在这里插入图片描述
STM32F407VE一共有82个GPIO口,
其用到的GPIO端口号和管脚为:
在这里插入图片描述
在这里插入图片描述

端口号管脚号备注
GPIOA0-15通用输入输出
GPIOB0-15通用输入输出
GPIOC0-15通用输入输出
GPIOD0-15通用输入输出
GPIOE0-15通用输入输出共80个GPIO
GPIOH0-1外部时钟接口

由此可见此款单片机一共有80个GPIO口,如果使用内部时钟的话,还可以扩展出GPIOH0与GPIOH1这两个外部时钟引脚。

GPIO口的框图(重点)

接下来,就是本文的第一个大重点了,关于GPIO框图的解释,通过这个图,我们需要基本弄清楚,1.GPIO口的输入,输出模式;2.每种模式对应的作用;3.使用GPIO不同模式时需要使用哪些片内外设,需要使用哪些寄存器。
编程手册中关于GPIO的结构图介绍如下图所示,官方是将所有模式以及输入输出整合在一张图上面,为了方便理解,我们来做个拆分。
在这里插入图片描述

输入框图解析

对上图稍微做了一个拆分,如下图所示,此图为GPIO的输入框图。
首先,从最左边开始介绍,从图中我们可以看出,最终输入单片机内核的方式一共有三种,第一种是经过ADC的模拟输入、第二种经过其他片上外设的复用输入,第三种是最下面的经过输入数据寄存器后直接输入给内核的,接下来我们来看一看这三种输入的介绍。
在这里插入图片描述

三种输入模式

1.模拟输入:模拟输入模式,见名知意,就是从片外外设输入进来的信号是模拟量。
这里需要对模拟量数字量做个区分,我们都知道,单片机也好,电脑也好,他们所能识别以及处理的始终是二进制数,也就是0101000…的数据串,这个1010100…组成的数据串就是数字量,通俗点说就是0和1,我数字量0和1对应的模拟量电压的低电平与高电平;那么什么是模拟量呢,就比如我们常见的电压、温度、湿度等等这些都叫做模拟量,总之就是需要经过一定的电路转换后才可以被单片机和电脑识别的量就是模拟量。
也正是因为单片机的内核无法直接识别模拟量的输入,所以外设的模拟量信号在进入芯片后,需要经过上图中浅绿色的ADC这个模拟量转数字量的片上外设才可以,也就是说,这种输入模式是专门用来处理模拟信号的,当我们确定输入量是模拟量时就必须将GPIO配置成为模拟输入模式
2.复用输入:关于复用输入模式,在弄清楚了上面的模拟输入后就可以对照了,既然为ADC专门开辟了一条输入道路,其他的片上外设自然也得争取一下,所以就有了复用输入模式,这个复用输入与模拟输入的最大不同在于,其接收到的信号都是数字量,只是根据不同的片上外设需求对这些数字量进行了定义,封装,打包,在输入内核之前,需要经这些对应协议的片上外设进行解析,拆包,然后再转交给内核处理。类似SPI、I2C、UART这些片上外设都是需要使用到这个模式的,当我们确定输入量需要使用这些片上外设进行加工时就必须使用此模式
3.通用输入:最后一种输入模式,就是通用输入模式,说白了就是输入状态只有0与1两种状态,类似按键的按下、未按下,某种传感器的阈值超标或者没超标之类的只涉及开与关的监测时,就是使用此模式

GPIO输入时内部器件及其作用

至此,关于GPIO的三种输入模式我们已经搞清楚了,但是图中还有一些器件的用处没有提到,下面来做个简单的介绍:(从右至左来看)

1.保护二极管

1.当外设信号进来之后首先经过的是上下各有一个保护二极管的位置,这两个二极管,可以成为钳位二极管,也就是将输入的电压控制IO口可以接受的范围内,当外界输入信号的电压高于VDD_FT时,上半部分的保护二极管会导通,将高电压带走,以此来保护IO以及单片机内部电路如下图所示:
在这里插入图片描述
同样,当输入信号的电压低于VSS时,下半部分的保护二管会导通,形成一个反向回路,从而保护IO口不被烧毁。
在这里插入图片描述

2.上下拉电阻(可配置)

2.经过保护电路后,会看到如下图所示的两个可编程控制的上下拉电阻,关于这两个电阻,一般是不会使用的,原因是其上下拉的能力有限,不是很稳定,为了保证良率,一般都是采取IO口外部在上下拉电阻来实现,这个在明天的按键输入编程中会有所体现。当然也有部分厂家会节约成本,就是用内部上拉下拉来实现控制IO口的初始状态,这种现象我们遇到了在来介绍。在这里我们只需要知道这个电路使我们程序里面可以控制的即可。
上拉电阻:上拉功能,IO口空闲时间保持高电平,
下拉电阻:下拉功能,IO口空闲时间保持低电平。

在这里插入图片描述

3.施密特触发器

3.经过上下拉电阻电路后就是一个施密特触发器,这个器件在编程中不需要我们来进行操作,可以发现的是,第一种模拟输入模式并没有经过它,而是直接走到了后面,这也从侧面说明了它在此处的作用就是将模拟量的电信号,转化成0与1的数字量,高电平经过它就会输出1,低电平经过它就会输出0.
在这里插入图片描述

4.输入数据寄存器(内核直接通过它读取IO口高低电平)

4.最后是输入数据寄存器,它的作用就是接收经过施密特触发器转换后的数字量,注意只是通用输入模式时才有用,复用模式的数字量信号并没有经过它,我们在后面通过通用输入模式获取IO的电平状态时就需要使用到这个寄存器。
在这里插入图片描述
有关输入部分的介绍就先到这,后面设计到相关编程的时候再来细说。

输出框图解析

关于输出框图的解析,同样我们还是将官方的图纸简化一下,将其中的输出部分单独拿出来。
如下图所示,跟上面的输入模式其实差不了太多,总的来说也是三种模式1.包含内核直接输出以及间接输出的通用输出模式;2.输出经过其他片上外设处理加工后再输出的复用输出模式;3.输出经过DAC的模拟输出模式。
在这里插入图片描述

输出的三种模式

1.通用输出模式:就是直接使用内核控制GPIO输出高低电平进行控制,不要经过其他任何片内外设的加工,最典型的就是对应LED灯的控制。
2.复用输出模式:复用输出模式与上面的复用输入模式一样,就是内核的数据输出以后,需要经过片上外设进行特殊的加工,将数据封装、定义、打包然后再将这些包数据传输给片外外设。一般外设有SPI、I2C、UART这类协议需求或者需要使用其他片上外设的时候就需要使用复用输出模式。
3.模拟输出模式:模拟输出模式与上面的模拟输入模式一样,当需要直接使用IO口输出模拟量时,由于内核是数字量,需要经过DAC(数字转模拟)的转换后,再通过GPIO口输出给外界,此模式也是DAC专用,其他的时候用不上。

GPIO输出时内部器件及其作用

关于输出的整个框图,我们还是从右向左来看,首先前面的保护二极管以及上下拉电阻的作用还是与输入模式一样,我们就不再解释了,经过这个部分后,我们来看看下图这个红框内电路的作用。

1.输出控制电路(可编程控制)

我们可以看见,通用输出以及复用输出都需要经过红色框的电路,唯独模拟输出不需要经过,看了上面的输入部分的框图,大家是不是找到了一丝共性,输入部分是模拟输入不经过施密特触发器,通用输入以及复用输入需要经过施密特触发器;这里红框的电路正好是施密特触发器的逆电路,作用是将内核已经片上外设的数字量信号0与1转行成高低电平,不同点在于,此处的红框电路需要我们在程序上进行控制,在红框右下方写着推挽、开漏以及静止三种状态,但实际编程操作时只有两种状态可以选择,一种是推挽模式,一种是开漏模式有关这两种模式的具体分析,这里给大家贴两个链接,感兴趣的可以去了解一下,不感兴趣只需要有下面这印象就可以了,
**推挽模式:**红框内的PMOS与NMOS都可以正常使用,也就是说不需要外接什么电路就可以实现高低电平的输出;
开漏模式:都漏了嘛,可以片面的理解为此模式不依靠外部上拉电路的话,就没法输出高电平,只能输出低电平,实际上是PMOS被屏蔽了,没法输出高电平,在实际使用的过程中,只有同一个IO口既要做输入又要做输出,切外部有上拉电阻时才使用此模式,不然的话,多数都是使用推挽模式。
1.GPIO推挽输出和开漏输出模式区别详解http://t.csdn.cn/M0zIQ
2.深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)http://t.csdn.cn/HJ9Y7
3.开漏输出和推挽输出http://t.csdn.cn/k9zGX
在这里插入图片描述

2.通用输出寄存器(内核直接输出高低电平到它)

最后就是下图的输出数据寄存器以及置位/复位寄存器了,关于这两个寄存器,后面一般使用的是内核直接输出数据到输出数据寄存器来实现高低电平,内核经过置位/复位寄存器后再输出到输出数据寄存器的间接输出很少使用。
在这里插入图片描述

小结

至此关于GPIO的结构以及输入输出模式的介绍就结束了,我们来总结一下,关于GPIO的输入输出,
GPIO的输入模式(三种):通用、复用、模拟;
GPIO的输出模式(也是三种):通用、复用、模拟;
其中输入输出是模拟量的时候使用的就是模拟输入模式以及模拟输出模式
输入输出需要使用到片上外设时就需要使用复用输入模式以及复用输出模式
内核通过GPIO直接控制GPIO进行输入以及输出时就是用通用输入以及通用输出模式。
然后是上下拉,一般不用,都是采取外部电路来实现的,配置过程中一般采用浮空;
再就是输出中的推挽以及开漏模式,推挽是可以不借助外部电路就输出高低电平,开漏需要借助外部上拉电路才可以实现,开漏模式一般用于IO口既要作为输入又要作为输出时,例如I2C的数据线,单总线的DS18B20、DHT11等等。

举例练习

上面介绍了这么多,我们来几个实际的例子来看一下:
首先是常见的LED电路,很明显,为了驱动LED小灯,我们需要选用输出模式,此电路中没有上拉电路,为了控制小灯的亮灭,我们需要使用推挽输出模式,由于整个过程只需要通过内核控制GPIO即可实现,所以最终PA6与PA7的模式选择就是通用推挽输出模式,且输出低电平小灯亮,输出高电平小灯灭。
在这里插入图片描述

然后是按键输入电路,如下图所示:首先肯定要配置为通用输入模式,由于有外部上拉电路,空闲状态是高电平,所以不需要配置上下拉。
在这里插入图片描述
再看一个特例:下图中就是没有外部上拉的按键输入,首先通用输入模式,由于没有外部上拉,我们需要保证空闲状态可控,且能够有效检测按下的低电平,这时候就需要额外配置一步上拉模式。
在这里插入图片描述
另外一种就是使用到IIC或者SPI等片上外设的时候就需要使用到复用模式。
在这里插入图片描述
而当GPIO使用到下面框图里面的ADC、DAC功能时我们就需要配置为模拟模式。
在这里插入图片描述

总结

本文主要是介绍了STM32的GPIO是什么,有什么用,以及怎么用,看完上面的这些,我们再回头看一眼官方的GPIO功能描述,他一共有八种模式,其实也就是我们上面提到的通用、复用、模拟与输入输出,以及推挽开漏,上拉下拉的组合搭配。
在这里插入图片描述

本文重点

1.理解STM32的GPIO命名规则,能够通过对应芯片手册查询对应的GPIO口数量;
2.熟悉STM32的输入输出框图,掌握各种模式的特征,清楚什么样的外设要使用什么样的模式来进行操作。

相关文章:

嵌入式学习笔记——认识STM32的 GPIO口

寄存器开发STM32GPIO口前言认识GPIOGPIO是什么GPIO有什么用GPIO怎么用STM32上GPIO的命名以及数量GPIO口的框图(重点)输入框图解析三种输入模式GPIO输入时内部器件及其作用1.保护二极管2.上下拉电阻(可配置)3.施密特触发器4.输入数…...

类和对象(中)

文章目录 继承的概念继承的语法父类成员访问super关键字子类构造方法super和this初始化protected关键字继承方式final关键字继承与组合一、继承的概念 继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类…...

Java——单词接龙

题目链接 leetcode在线oj题——单词接龙 题目描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff…...

HTML DOM 事件监听器

通过JavaScript&#xff0c;我们可以给页面的某些元素添加事件的监听器&#xff0c;当元素触发相应事件的时候监听器就会捕捉到这个事件并执行相应的代码。addEventListener() 方法实例当用户点击按钮时触发监听事件&#xff1a;document.getElementById("myBtn").ad…...

java基本数据类型取值范围

在JAVA中一共有八种基本数据类型&#xff0c;他们分别是 byte、short、int、long、float、double、char、boolean 整型 其中byte、short、int、long都是表示整数的&#xff0c;只不过他们的取值范围不一样 byte的取值范围为-128~127&#xff0c;占用1个字节&#xff08;-2的…...

maven的安装配置

目录 1. Maven的安装配置 1.1检测jdk的版本 1.2下载maven 1.3配置maven环境变量 2.认识maven的目录结构 2.1 创建一个文件夹作为项目的根目录 1.创建如下结构的目录 2. 在pom.xml文件中写入如下内容(不用记忆) 3.在mian-->java--》下边创建java文件​编辑 4.cmd下…...

【转载】System Verilog 上下文context的含义以及设置导入函数的作用域

放丢失&#xff0c;转载一下&#xff0c;原文&#xff1a;https://blog.csdn.net/qq_31348733/article/details/1010546251. 上下文(context)的含义导入函数的上下文是该函数定义所在的位置&#xff0c;比如$unit 、模块、program或者package作用域(scope)&#xff0c;这一点跟…...

redis数据类型

Redis 数据类型 redis无论什么数据类型&#xff0c;在数据库中都是以key-value形式保存&#xff0c;并且所有的key(键)都是字符串&#xff0c;所以讨论基础数据结构都是讨论的value值的数据类型 1. 字符串操作 set key value [ex seconds] [px milliseconds] [nx|xx] 设置ke…...

【独家】华为OD机试 - 最多获得的短信条数(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

【剧前爆米花--爪哇岛寻宝】包装类的装拆箱和泛型的擦除机制

作者&#xff1a;困了电视剧 专栏&#xff1a;《数据结构--Java》 文章分布&#xff1a;这是关于数据结构的基础之一泛型的文章&#xff0c;希望对你有所帮助。 目录 包装类 装箱 装箱源码小细节 拆箱 泛型 什么是泛型 泛型编译的擦除机制 不能实例化泛型类型数组 包装…...

BufferQueue研究

我们在工作的过程中&#xff0c;肯定听过分析卡顿或者冻屏问题的时候&#xff0c;定位到APP卡在dequeueBuffer方法里面&#xff0c;或者也听身边的同事老说3Buffer等信息。所以3Buffer是什么鬼&#xff1f;什么是BufferQueue?搞Android&#xff0c;你一定知道Graphic Buffer和…...

【计组笔记08】计算机组成与原理之IO设备系统(输入、输出设备、外存储器)

这篇文章,主要介绍计算机组成与原理之IO设备系统(输入、输出设备、外存储器)。 目录 一、IO设备系统 1.1、IO系统的演变 (1)早期阶段 (2)接口模块和DMA阶段...

使用Vue实现数据可视化大屏功能(一)

导语   现在在很多的工程项目中&#xff0c;都有有关于数据大屏相关的监控内容&#xff0c;这里我们就来看一下如何用Vue来搭建一个数据可视化大屏应用。 创建项目 使用WebStorm工具创建一个Vue的项目。如下图所示&#xff0c;配置好vue的脚手架工具和nodejs的运行环境&#…...

华为OD机试真题Python实现【整数对最小和】真题+解题思路+代码(20222023)

整数对最小和 题目 给定两个整数数组 array1 array2 数组元素按升序排列 假设从array1 array2中分别取出一个元素可构成一对元素 现在需要取出K个元素 并对取出的所有元素求和 计算和的最小值 注意: 两对元素如果对应于array1 array2中的两个下标均相同,则视为同一个元素 �…...

2023年绿色建筑国际会议(ICoGB 2023)

2023年绿色建筑国际会议&#xff08;ICoGB 2023&#xff09; 重要信息 会议网址&#xff1a;www.icogb.org 会议时间&#xff1a;2023年5月19-21日 召开地点&#xff1a;斯德哥尔摩 截稿时间&#xff1a;2023年4月1日 录用通知&#xff1a;投稿后2周内 收录检索&#xff…...

【力扣1653】使字符串平衡的最少删除次数

给你一个字符串 s &#xff0c;它仅包含字符 a 和 b​​​​ 。你可以删除 s 中任意数目的字符&#xff0c;使得 s 平衡 。当不存在下标对 (i,j) 满足 i < j &#xff0c;且 s[i] b 的同时 s[j] a &#xff0c;此时认为 s 是 平衡 的。请你返回使 s 平衡 的 最少 删除次数。…...

链表的中间结点与链表的倒数第k个结点(精美图示详解哦)

全文目录引言链表的中间结点题目描述与思路实现链表的倒数第k个结点题目描述与思路实现总结引言 在上一篇文章中&#xff0c;介绍了反转链表 我们利用了链表是逻辑连续的特点&#xff0c;逆置了链表的逻辑连接顺序&#xff0c;从而实现反转链表&#xff1a; 戳我查看反转链表详…...

防静电监控仪可以检测现场设备是否和实际大地接触

随着电子产品集成化度越来越高&#xff0c;对于电子产品装配来说&#xff0c;静电的危害严重影响到产品的质量、成品率和可靠性, 必须对用于电子产品装配的净化间进行系统防静电措施&#xff0c;将生产过程中的静电危害程度降至最低。近年来电子企业对ESD的危害的深入认识&…...

计算机网络第八版——第二章课后题答案(超详细)

第二章 该答案为博主在网络上整理&#xff0c;排版不易&#xff0c;希望大家多多点赞支持。后续将会持续更新&#xff08;可以给博主点个关注~ 第一章 答案 【2-01】物理层要解决哪些问题&#xff1f;物理层的主要特点是什么&#xff1f; 解答&#xff1a;物理层考虑的是怎…...

2023年3月全国DAMA-CDGA/CDGP数据管理认证火热报名中...

弘博创新是DAMA中国授权的数据治理人才培养基地&#xff0c;贴合市场需求定制教学体系&#xff0c;采用行业资深名师授课&#xff0c;理论与实践案例相结合&#xff0c;快速全面提升个人/企业数据治理专业知识与实践经验&#xff0c;通过考试还能获得数据专业领域证书。 DAMA认…...

查询与进程调度(CFS)相关信息

目录 查询与进程相关的调度信息 查看CFS调度信息 CPU相关的信息 CFS就绪队列的总运行时间 实时队列与deadline调度的相关信息 所有进程相关的信息 查询与进程相关的调度信息 进程的nice值&#xff0c;优先级&#xff0c;调度策略,vruntime等信息。在proc目录下&#xf…...

07对MVC的理解

MVC是一种设计模式&#xff0c;用于将应用程序的不同方面分离开来&#xff0c;以便更容易地管理和维护应用程序。MVC代表模型-视图-控制器&#xff0c;它将应用程序分为三个主要组件&#xff1a;模型&#xff08;Model&#xff09;&#xff1a;负责管理应用程序的数据和业务逻辑…...

WebSocket与Socket、TCP、HTTP的关系

目录&#xff1a;1、名词解析&#xff1b;2、WebSocket简介与原理&#xff1b;3、WebSocket和Http的关系和异同点&#xff1b;4、WebSocket与Socket的区别&#xff1b;5、Socket和TCP/IP&#xff1b;6、一个应用程序的通信链路&#xff1b;1、基础名词解析&#xff1a;&#xf…...

音频基础知识简述 esp-sr 上手指南

此篇博客先对音频基础知识进行简要叙述&#xff0c;然后帮助读者入门 esp-sr SDK。 1 音频的基本概念 1.1 声音的本质 声音的本质是波在介质中的传播现象&#xff0c;声波的本质是一种波&#xff0c;是一种物理量。 两者不一样&#xff0c;声音是一种抽象的&#xff0c;是声…...

Flex弹性布局一文通【最全Flex教学】

文章目录一.Flex布局1.1 传统布局和flex布局1.1.1 传统布局1.1.2 flex弹性布局1.2 flex初步体验1.3 布局原理二.常见Flex属性2.1 常见父项属性2.2 flex-direction主轴的方向2.3 justify-content设置主轴上的子元素排列方式2.4 设置子元素是否flex-wrap换行2.5 align-itmes设置侧…...

Navicat使用教程

Navicat&#xff1a;一个可以对别人的数据库进行操作的软件&#xff08;需要与如mysql等数据库配套使用&#xff09; 1. 下载mysql MySQL :: Download MySQL Community Server (Archived Versions) 下载上面那个版本 下载下来是个压缩包&#xff0c;解压 2.配置mysql (1)在…...

35岁测试人该何去何从?10年工作经验的我,只不过是一年的工作经验用了10年......

如果到了这个年龄&#xff0c;还是初级测试&#xff0c;或者只会一些简单的自动化测试&#xff0c;那么真的是不好干了。 35的年龄&#xff0c;企业对员工是有另一层面的考量。 简单来说&#xff0c;就是年龄上去了&#xff0c;能力也要上去&#xff0c;要么是技术专家&#…...

SpringBoot 项目中集成 Prometheus 和 Grafana

项目上线后&#xff0c;除了能保障正常运行以外&#xff0c;也需要服务运行的各个指标进行监控&#xff0c;例如 服务器CPU、内存使用占比&#xff0c;Full GC 执行时间等&#xff0c;针对一些指标出现异常&#xff0c;可以加入一些报警机制能及时反馈给开发运维。这样&#xf…...

红队APT——反朔源流量加密CSMSF证书指纹C2项目CDN域前置

目录 0x01 背景交代 0x02 常见红蓝对抗中红队面临问题 0x03 蓝队发现处置情况...

Linux环境下实现并详细分析c/cpp线程池(附源码)

一、线程池原理 如果并发的线程数量很多&#xff0c;并且每个线程都是执行一个时间很短的任务就结束了&#xff0c;这样频繁创建线程就会大大降低系统的效率&#xff0c;因为频繁创建线程和销毁线程需要时间。 线程池是一种多线程处理形式&#xff0c;处理过程中将任务添加到…...

网站怎么做qq登录/seo站长工具综合查询

环境 -springboot 实现过程 1、引入依赖 <!--jdbc这个依赖不能少&#xff0c;HikariConfig这个类的包需要这个依赖&#xff0c;import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; --><dependency><groupId>org.spring…...

网站推广是网站建设完成之后的长期工作。/如何推广我的网站

MJRefresh 是一个用法简单的下拉刷新框架&#xff0c;所以用它来完成gif动画的刷新也是很简单。 先看下需要用到的属性 property (nonatomic,strong) NSArray *datasArray; property (nonatomic,strong) UITableView *tableView; property (nonatomic,strong) NSMutableArray *…...

电子商务网站建设花费/关键词挖掘工具

hello 我是涤生,以下为笔者自己见解&#xff0c;如有错误&#xff0c;请大家务必指出&#xff0c;谢谢♪(&#xff65;ω&#xff65;)&#xff89; 首先来说说 int main() 、void main()、void main(void)这几个吧 以前我也不知道这为什么&#xff0c;上网一搜&#xff0c;好…...

宠物医院网站开发背景/100%能上热门的文案

千万级别mysql合并表快速去重简析mysql合并表去重目标&#xff1a;现有表a和b&#xff0c;把两个表中的数据合并去重到c表中。其中a和b表中数据量大概在2千万左右。基本情况操作系统版本&#xff1a;CentOS release 5.6 64位操作系统内存&#xff1a;8G数据库版本&#xff1a;5…...

长沙网站建设规划/合肥网

1,报错提示: 编辑器或项目正在尝试签出在内存中修改的文件&#xff0c;这将导致保存该文件。 在生成过程中保存文件是危险的&#xff0c;这可能会在将来导致不正确的生成输出。 是否仍然继续签出? 2,原因:licenses.licx属性设为了只读. 3,解决: a,搜索licenses.licx,去掉只读属…...

公司变更股东要交税吗/北京seo顾问服务

在上周的 Vue.js 伦敦大会上&#xff0c;Vue.js 作者尤雨溪简要介绍了 Vue 下一个主要版本要发布的内容&#xff0c;9 月 30 日&#xff0c;尤雨溪在 medium 个人博客上发布了 Vue 3.0 的开发路线&#xff0c;我们不妨看看 Vue 3.0 将会有怎样的发展。 兼容 按照尤雨溪的说法…...