IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 从零开始学STM32(学习笔记——第三天) -> 正文阅读

[嵌入式]从零开始学STM32(学习笔记——第三天)

CSDN话题挑战赛第2期
参赛话题:学习笔记

参考文章:
【教学文章】STM32内部重要功能全记录
【教学文章】STM32内部核心功能大揭秘
【教学文章】STM32内部重要功能全记录

框架:STM32内部核心功能

在这里插入图片描述

一、【ARM内核】

1. “ARM 32位Cortex?-M3,最高 72MHz工作频率”

①采用ARM 32位Cortex?-M3计算核心。

其中角标TM是未注册或正在注册的商标标志,表示 Cortex 是ARM公司的一个 品牌商标,有没有TM内容没有任何影响

②专门为嵌入式产品开发所设计的内核,说明了这款单片机适用于嵌入式产品开发。
③这款单片机的工作频率可以通过内部的分频器设置而改变,最大只能到72MHz。

通过设置可以超出这个频率,但单片机会变得不稳定,甚至不能工作。这句话旨在告诉开发人员,这款芯片的工作频率只能到72MHz,如果你要更高的工作频率就选其他型号。

2. “在存储器的0等待周期访问时可达 1.25DMips/MHz”

存储器0等待周期是读写RAM和 Flash时不需要浪费时间,读和写在一瞬间完成,在这种情况下内核的速度可达1.25DMips/MHz。

MIPS:Million Instructions executed Per Second,每秒执行百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指令。
DMIPS全称是Dhrystone MIPS,用来计算同一秒内系统的处理能力,单位是百万,即MIPS。
1.25 DMIPS是指这个处理器测整数计算能力为(1.25*100万)条指令/秒

3. “单周期乘法和硬件除法”

所有单片机的程序都会涉及运算,加法和减法运算都是单片机内核硬件完成的,部分单片机有硬件完成的乘法运算,还有少部分单片机加入了硬件除法运算。为什么要加硬件运算呢?因为速度快。
如果你的单片机内核只有硬件加减法运算,你要算乘法就要把乘法在软件上转换成加法,3×4要转换成3+3+3+3,需要加3次才能得到结果,而单周期乘法运算只用1个时钟周期1次完成。硬件除法也是同样的道理。

二、【存储器】

1. “64KB或128KB的闪存程序存储器”

①闪存程序存储器:Flash存储器(简称Flash),一种断电仍可记忆的存储器。在单片机中,Flash是用来保存用户程序(也就是你给单片机编写的程序)的,所以它叫程序存储器。
我学习的这款单片机的Flash有64KB和128KB两种大小,如果不在单片机里存放大量的图片数据、字库数据或大量参数的话,64KB的空间非常够用。

特点:制造成本低,可以做出很大存储容量,可无限次数地读出数据,写入数据有最多10万次的限制。Flash相当于计算机的硬盘,能够断电记忆、存储空间大、价格相对便宜。

缺点:写入数据前需要先擦除扇区(把整个空间分成一个个小区块来操作,每一小块就叫一个扇区),读写数据都需要花一些时间,写的速度比读要慢很多,从几微秒到几毫秒不等。

2. “高达20KB的SRAM”

①SRAM:一种可快速读写的静态随机存取存储器存储器,用户程序会从Flash读取到SRAM中运行,SRAM中存放着各种参与程序运算的数据,而且这些数据会随着程序的内容而不断改变,所以它叫随机存取存储器。因为SRAM可以达到读写的0等待周期,而Flash读写需要花上一些时间。如果程序在Flash里运行,写 Flash会拖慢单片机速度,Flash的写入次数最多10万次,频繁写Flash很容易损坏。若把数据从Flash读到SRAM中再运行,一则0等待周期不会拖慢速度,二则没有频繁写Flash的问题,三则不需要做大容量SRAM导致成本升高。

特点:读和写都是0等待周期,不像Flash那样需要等待一段时间,所以用户程序在SRAM中运行可以达到最高速度。而且SRAM可无限次读和写,且写入时也不需要先擦除扇区。

缺点:制造成本较高,通常容量都比较小,断电后存储的数据会丢失

51单片机SRAM只有 512B,增强型51单片机SRAM也只有4KB,这款 STM32单片机有20KB的SRAM,值得用“高达”来形容。

三、【时钟】

(1)并非日常使用的钟表,但从单片机技术层面上讲,日常生活中可以记录日期时间的叫实时时钟,缩写是RTC (Real_Time Clock)。RTC 是集成电路,通常称为时钟芯片。
(2)单片机的时钟是指单片机工作的基准频率的来源,就是由一个电路产生类似脉搏的脉冲信号,一下接一下有规律地稳定地跳动,单片机中所有功能组件都需要将这个跳动作为其工作的标准。
如下图,单片机外部时钟源向单片机发来的时钟脉冲的时序图
时钟

图中上方的方波形的脉冲就是单片机所需要的时钟信号,图中的方波由高到低再到高(图中THSE的部分),就一个时钟周期。在这一个时钟周期内,单片机内核能运行一条“单时钟周期”的程序,还有一些“多时钟周期”的程序需要多个时钟周期才能执行完毕。但不论怎样,时钟周期决定了单片机程序运行的周期。时钟频率越高,单片机运行程序越快,所表示出的运行速度就越快。所以说单片机的运行速度取决于时钟频率,时钟频率取决于时钟源的频率时钟源又分为振荡器和分频器(倍频器),它们两个共同决定了时钟频率。

1.振荡器

振荡器是一种可以产生固定频率方波的硬件电路,如果你学过数 模电路知识一定了解方波发生电路,比如用NE555芯片做方波输出,单片机内部的振荡器大概与之类似。图3所示是NE555 芯片方波输出的电路原理图,方波信号从3脚输出,这个电路就可以说是一个振荡器。此电路的工作原理解析大家可以在我写的《爱上电子DIY》一书中找到。方波的产生主要靠电阻R1和电容C1,R1和 C1的值决定了方波频率,这种用电阻(R)和电容(C)来产生频率的振荡器电路叫RC振荡器。还有一种石英晶体产生方波输出的振荡器,图4所示是用CD4060芯片外接石英晶体(B1)生产方波的电路,石英晶体的参数值决定了方波频率,这种用石英晶体产生频率的振荡器电路叫晶体振荡器。

振荡器是一种可以产生固定频率方波的硬件电路。

RC振荡器: 方波的产生主要靠电阻R电容CR和 C的值决定了方波频率,这种用电阻(R)和电容(C)来产生频率的振荡器电路叫RC振荡器。

RC振荡器的重要组件是电阻和电容,优点是成本低,可集成到芯片里面;缺点是温漂太大(频率随温度的变化会有漂移改变),频率输出不稳定

晶体振荡器: 还有一种石英晶体产生方波输出的振荡器,石英晶体的参数值决定了方波频率,这种用石英晶体产生频率的振荡器电路叫晶体振荡器。

晶体振荡器的温漂很小,但晶体体积大,不能集成在单片机内部,必须要外接一个晶体元件。

石英晶体是一种元器件,它上面标的频率参数就是它在振荡器电路里所能产生的方波频率,比如标有8MHz的晶体就能产生8MHz的方波频率。石英晶体就是我们常听说的“晶振”,其实“晶振”本来是指晶体振荡器,是石英晶体相关电路的统称,但因为相关电路都已经集成在单片机内部,在外面可见的只有石英晶体,大家习惯上就把晶体叫成了“晶振”

STM32的振荡器
STM32内核工作需要一个高速振荡器,而内部的实时时钟(RTC)功能需要一个低速振荡器,两种振荡器都有外部晶体和内部RC两套硬件电路,STM32把它们都放到单片机上供用户选择使用,如下图。
···比如你需要用到高精度延时、串口、CAN总线这类对时钟精度要求高的场合,使用外部高速晶体振荡器(HSE) 是最佳方案,温漂小且频率准确。
···如果你对时钟精度要求不高,只做简单的任务,那使用内部高速RC振荡器(HSI)可省去外部晶体,节约了成本和电路板的空间。
···如果你需要RTC实时时钟(比如做电子钟或其他带日期时间显示的产品),那一定要使用外部低速晶体振荡器(LSE),并外接一个32.768kHz的晶体,只有这样才能达到最准确的日期、时间走时。而内部低速RC振荡器(LSI)一般不用来做日期、 时间走时,因为走时也不准确,它主要用来做长时间的休眠唤醒。
四种可选的振荡器

2.倍频器

STM32单片机内部有一个倍频器,倍频器的工作是把振荡器的频率分割成多段。
STM32开发板上所使用的外部晶体是8MHz的,那是怎么让内核达到72MHz频率的呢?
答案就是使用倍频器并设置成9 倍,8MHz×9 倍=72MHz。
不直接用72MHz的晶体主要的原因有两个:
一是晶体的频率越高价格越贵,甚至有些太高的频率没法制造出来,而倍频器能让低频率晶体做高频率的工作;
二是倍频器可以设置倍频的倍数,用户从而能根据需要随时升高频率(提高性能)或降低频率(降低功耗),变频比定频更有优势。
STM32内部的倍频器是由一种叫锁相环的硬件电路实现的,英文缩写是PLL, 当你看到数据手册出现PLL字样时你要意识到这是用锁相环实现的倍频器。下图所示是4种振荡器和一个倍频器之间的时钟源连接关系图,也可以叫“时钟树”关系图。我作为初学者看起来十分有些吃力,但这不影响我继续学习,留一个悬念,当学到系统时钟编程方法时我们再回过头来分析这张图。
在这里插入图片描述

四、【复位】

复位功能的作用是让RAM 中的数据清空,让所有连接到复位的相关功能都回到刚开始工作的(初始)状态。在接通电源之前,单片机里的存储器及其他功能的状态是混乱、不稳定的。如果上电后不复位,所有功能都处在无序状态,复位的作用就是让单片机内部秩序化,都回到设计者规定好的状态。这个状态为用户程序的运行做了充分的准备,就像计算机每次重启一样。

在STM32 单片机中,有一个供电监控器,这个监控器是一直工作的,它能监测外部电源的电压,当电压低于2V 时,监控器会让单片机复位。当电压高于2V 时,监控器让单片机进入工作状态。这个监控器本质上达到了上电复位的效果,也就是说你每次给单片机接通电源时,电压都是一次从0 升到3.3V(STM32 的工作电压)的过程,这个过程使单片机复位,不需要再外接复位电路。还有一种复位的方法是在单片机的复位引脚上接一个微动开关,开关另一端接地。按下开关可手动复位,如下图所示。
在这里插入图片描述

五、【电源管理】

电源管理是指对单片机外接电源处理、分配的功能。
电源管理主要分成4 个部分:分别是备用电源输入、端口输入/ 输出、逻辑电源输入和模拟电源输入
其结构如下图所示,蓝色方框里是单片机内部电路,方框之外是单片机的外部电路

逻辑电源输入和模拟电源输入,这两部分电源输入在引脚较多(64 脚以上)的单片机上是分开的。而在引脚较少的单片机上,逻辑电源和模拟电源并联在一起使用。合并输入方式会对模拟电源的稳定性造成影响,但如果设计中不要求高精度,一般会合并使用。

1.单片机最基本的供电输入端口:逻辑电源输入。

给该类端口介入直流电压(2~3.6V):
1.可以让ARM 内核、存储器、I/O 端口和其他纯数字电路工作。
2.逻辑输入电压还能让I/O 端口输入或输出数字信号的电压。
举例:使用I/O端口点亮LED 或者让一个按键输入,都会用到逻辑电源输入的电压。

而模拟电源输入的电压是用在模数转换器(ADC)、RC振荡器和PLL 倍频等模拟电路上的。分开输入的电源在使用上有很多好处,而合并输入可以减少引脚的占用。

2.备用电源输入是一个独立的存在。

1.专门给实时时钟(RTC)供电的,保证在逻辑电源断开后让RTC 仍可走时。
2.给唤醒电路和后备寄存器供电,让它们一直处在工作状态。
3.可以外接独立电源或者一块1.8 ~3.6V 的电池。如果不想使用单片机内部的RTC 等功能,备用电源可以不接。
在这里插入图片描述

六、【低功耗】

单片机在正常工作时:
1.内部大部分功能都处于开启状态
2.最耗电的ARM 内核处在100% 全速运行状态。

当单片机要用在电池供电的产品上时,降低功耗、让电量使用更持久便成了重要的项目需求。STM32 单片机为应对这样的用户需要,做出了低功耗功能。通过关掉一些耗电大的内部功能来达到省电的目的,根据关掉的功能数量,可分为3 种低功耗模式,分别是睡眠模式、停机模式、待机模式

1.睡眠模式

···处理方式:只关掉ARM 内核,其他所有功能正常工作。
···特点:不怎么省电,但不会影响整个系统的工作。
···唤醒方式:因为内核在关掉之后,可以通过所有内部和外部功能来唤醒(重新开启)内核。
···类比:相当于我们的PC 不用时,CPU 只有2% 左右的工作量,几乎关闭。当我们动动鼠标时,CPU 又被这个行为唤醒,处理鼠标移动的事件,完成后又回到几乎关闭的状态。单片机的睡眠模式与之大体相同。
···优点:睡眠模式的好处是系统的正常工作不受任何影响,只是内核在没有工作时才关闭;
···缺点:只关内核不够省电。

2.停机模式

···处理方式:它将ARM 内核与几乎所有内部功能,包括外部高速晶体振荡器和PLL 都关掉了,只有RTC、看门狗定时器、中断控制器在工作,只是还能接收中断,SRAM 中的数据还保存。
···特点:停机模式适用于平时工作任务很少的情况,单片机完成工作后有很长一段时间可以休息。这时开启停机模式,可以最大程度省电。
···唤醒方式:是外部中断、RTC 的闹钟还有USB 接口唤醒,除此之外再没有能恢复的方式,因为所有的内部功能都被关掉了,时钟电路都不工作了。
···类比:这有点像PC 的睡眠模式,进入后只有按电源按键才可以唤醒,唤醒后系统数据、你打开的文件都还在,因为内存没有关掉。
···优点:是睡眠模式的升级版,非常省电;
···缺点:程序不能正常运行了,只有被唤醒后,内部的功能才能工作。

3.待机模式

···处理方式:和停机模式的区别把SRAM 和外部中断控制器也关掉了,用户运行的数据消失,也就表示唤醒后必须重头开始,相当于复位。
···唤醒方式:按复位按键、看门狗定时器复位、专用唤醒引脚和RTC 闹钟唤醒。复位按键和专用唤醒引脚完全不耗电,看门狗定时器算是唯一需要耗电的。RTC 闹钟由备用电源供电,不耗逻辑电源的电。
···类比:待机模式相当于PC 的关机,只有按电源按钮才能复位启动。待机模式在实际的项目开发中很少用到,因为停机模式已经很省电了,只有一些特殊需求才会用到。
工作模式

七、【ADC】

···功能:模拟数字转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。读取模拟量的电压,类似于电压表。如下图。
···供电:需要模拟电源供电。
···具体描述:在单片机中,I/O 端口是输入或输出逻辑电平的,也就是高电平(1)和低电平(0)。也就是说,I/O 端口只能读取有电压和没电压两种状态,至于有电压时的电压是多少伏,这就需要ADC 功能来判断。ADC 可以读出从0V 到电源电压之间的具体电压值,并把这个值变成一组数据。
···性能:单片机的ADC 性能各有不同,有8位、10 位、12 位甚至更高的,位数越多,表示测得的电压值更精密。STM32F103 中的ADC 是12 位的,对于一般的精度需要已经足够。

在这里插入图片描述

八、【DMA】

···功能:代替CPU 完成内部功能间的数据传递的。
···对比:
—>在没有DMA 功能的单片机里,想读取ADC 的值,首先要在内核向ADC 功能发出指令,然后等待ADC 读取完成,内核再从ADC 读出数据,再存放到SRAM 当中。(缺点) 这个过程需要内核的过程参与,这占用了内核的时间,内核就不能做其他工作了。如下图。
在这里插入图片描述

—>DMA 功能可以在这种数据读取、存放的任务上完全解放内核。它能按预先设定好的设置从ADC 读出数据,然后自动存放到SRAM 中指定的位置,不需要内核的参与。当内核需要ADC 的数据时,只要读SRAM 指定的位置这一步操作就行了。
···优点:DMA 不只能读ADC,它还能在Flash、SRAM、SPI、USART、定时器、I2C 等功能之间相互传递数据。STM32F103 的DMA 有7 个通道,可以设置7 组数据传递任务。DMA 大大提高了内核的工作效率,真的是很重要的功能。如下图。
在这里插入图片描述

九、【I/O端口】

1.介绍:

···命名:在写法上,正确的是I/O,但也有省去斜线直接写成IO 的,在STM32 单片机上也被写成GPIO,都是可以的。
···含义:GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
···实际用途:I/O 端口也可以代替除ADC 之外所有的逻辑电平的通信接口,包括我们后面要讲的I2C、USART、SPI、CAN 等。早年的单片机没有那么多通信接口,也都是靠I/O 端口来模拟的,由此可见I/O 端口的全能。I/O 端口最原本的功能就是电平的输入(IN)和输出(OUT),所以才用I 和O 两个首字母作为它的名字。

STM32F103 最多有80 个I/O 端口,这些端口每16 个被分成一组,一共有5 组。组的名字分别是PA、PB、PC、PD 和PE,每组中16 个端口的名字可以是PA0 到PA15,其他组也一样。但由于封装引脚数量不同,端口的数量也不同。STM32F103C8T6这款单片机的48 个引脚当中有37 个可作I/O 端口。其中PA 和PB 的16个端口都引出了,PC组只引出3个,PD组只引出2个。如图所示。
在这里插入图片描述

2.工作模式

下图所示是GPIO的8 个工作模式:
在这里插入图片描述
···输入模式:
①模拟输入是在作ADC 输入接口时使用的,
②浮空输入是内部不接电阻,
③下拉和上拉输入是在I/O 内部接一个约10kΩ的下拉或上拉电阻,
根据外部连接的电路可以设置它们。
···输出的模式:
①推挽是指I/O 端口有很强的电流推动能力,可以输出一定量的电流,用于推动一些元器件(如LED)工作。
②开漏则是弱电流的输出,用于逻辑电平的数据信号通信。
③复用的推挽和开漏是用在复用状态下的,按下不表,复用功能时再说吧。

十、【调试模式】

1.特殊接口:JTAG

在ARM 的内核中,有一组用于仿真调试的接口。不仅是STM32,所有用ARM 内核的单片机都支持这个接口,它叫JTAG。JTAG 接口的功能主要是做程序仿真。JTAG 还有一个功能是控制I/O 端口的输出电平状态,以测试端口是否正常。但测试端口功能很少有人使用,甚至大家都不太知道有这个功能。

2.仿真

···含义:仿真,就是不把程序下载到Flash 里,而是在计算机端直接控制单片机内核,使单片机能达到和运行下载到Flash 里的程序一样的工作效果。因为不是真的运行程序,而是在计算机上模拟的,所以叫仿真。
···优点:可以在计算机上实时改动参数,还可以慢速一步一步地执行程序,看每一步的效果。用仿真功能要比把程序下载到Flash 里再看效果要高效很多。

3.SWD

所有STM32 单片机都带有JTAG 接口,还有JATG 的简化接口SWD。下图所示是调试接口与单片机的关系,可以看出JTAG 是内核的一部分,并不是一个独立的功能。连接上,可以用5 条线的标准JATG,也可以用简化版的2条线的SWD,它们的功能是一样的,只是连接的方式不同。(有坑!还不会调试,后面希望能坚持学到!)
在这里插入图片描述

十一、【定时器、看门狗、嘀嗒定时器】

···定时器

定时器的本质是计时,当达到设置的时间后去做某个事件。
那定时器是怎么知道时间的呢?主要是通过系统时钟,时钟产生机械周期,内核以机械周期为单位工作,定时器也以此计数。所以定时器也被说成计数器,因为它就是以机械周期为间隔时间进行计数。当定时器到达了设置的数值时,就会产生一个中断或事件。普通定时器产生中断信号给内核,看门狗定时器则产生复位,如下图所示。
在这里插入图片描述

···STM32F103系列定时器

···3个普通定时器
···1个高级控制定时器
···2个看门狗定时器
···1个系统滴答定时

在这里插入图片描述

1.通用定时器(TIMx)

STM32F103xx增强型产品中,内置了多达3个可同步运行的标准定时器(TIM2、 TIM3和TIM4) 。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器4个独立的通道,每个通道都可用于输入捕获、输出比较、 PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。
它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结。任一标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制
这些定时器还能够处理增量编码器的信号,也能处理1至3个霍尔传感器的数字输出。

2.高级控制定时器(TIM1)

高级控制定时器(TIM1)可以被看成是分配到6个通道的三相PWM发生器(不常用),它具有带死区插入的互补
PWM输出,还可以被当成完整的通用定时器。四个独立的通道可以用于:
● 输入捕获
● 输出比较
● 产生PWM(边缘或中心对齐模式)
● 单脉冲输出

配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全
调制能力(0~100%)。
在调试模式下,计数器可以被冻结,同时PWM输出被禁止,从而切断由这些输出所控制的开关。
很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功
能与TIM定时器协同操作,提供同步或事件链接功能。
TIM1和TIMx对比图如下:
在这里插入图片描述

3.独立看门狗

独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个内部独立的40kHz的RC振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选项字节可以配置成是软件或硬件启动看门狗。在调试模式下,计数器可以被冻结。

4.窗口看门狗

窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。

5.系统时基定时器(滴答定时器)

这个定时器是专用于实时操作系统,也可当成一个标准的递减计数器。它具有下述特性:
● 24位的递减计数器
● 自动重加载功能
● 当计数器为0时能产生一个可屏蔽系统中断
● 可编程时钟源

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:50:48  更:2022-10-17 12:53:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 16:48:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码