STC15系列CCP/PWM/PCA介绍
STC15系列CCP/PWM/PCA介绍
- CCP:是英文单词的缩写Capture(捕获),Compare(比较),PWM(脉宽调制)
STC15系列部分单片机集成了3路可编程计数器阵列(CCP/PCA)模块,可用于软件定时器
、外部脉冲的捕捉
、高速脉冲输出
以及脉宽调制(PWM)输出
。
与CCP/PWM/PCA应用有关的特殊功能寄存器
- STC15系列 1T 8051单片机 CCP/PCA/PWM特殊功能寄存器表
PCA控制寄存器:CCON
- PCA控制寄存器
- CF:PCA计数器阵列溢出标志位。当PCA计数器溢出时 CF由硬件置位。如果CMOD寄存器
的ECF位置位, CF标志可用来产生中断。CF位可通过硬件或软件置位, 但只可通过软件清零。 - CR:PCA计数器阵列 位通过软件置位, 用来起动PCA计数器阵列计数。该位通过软件清零, 用来关闭PCA计数器。
- CCF2:PCA模块2中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软件清零。
- CCF1:PCA模块1中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软件清零。
- CCF0:PCA模块0中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软件清零。
PCA工作模式寄存器:CMOD
- PCA工作模式寄存器(PCA时钟源设置寄存器)
- CIDL:空闲模式下是否停止PCA计数的控制位。
当CIDL=0时, 空闲模式下PCA计数器继续工作
当CIDL=1时,空闲模式下 PCA计数器停止工作。
- CPS2、CPS1、CPS0:PCA计数脉冲源选择控制位。PCA计数脉冲选择如下表所示。
- 例如,CPS2/CPS1/CPS0 = 1/0/0时,CCP/PCA/PWM的时钟源是SYSclk,不用定时器0,PWM的频率为SYSclk/256.
- 如果要用系统时钟/3来作为PCA的时钟源,应选择TO的溢出作为CCP/PCA/PWM的时钟源,此时应让T0工作在1T模式,计数3个脉冲即产生溢出。用TO的溢出可对系统时钟进行1~65536级分频(T0工作在16位重装载模式)。
- ECF:PCA计数溢出中断使能 。
当ECF = 0时,禁止寄存器CCON中CF位的中断;
当ECF = 1时,允许寄存器CCON中CF位的中断.
3.PCA比较/捕获寄存器CCAPM0、CCAPM1和CCAPM2
- B7:保留为将来之用。
- ECOM0:允许比较器功能控制位
当ECOM0=1时,允许 - CAPP0: 正捕获控制位
当CAPP0=1时,允许 - CAPN0:负捕获控制位
当CAPN0=1时 下降 - MAT0: 匹配控制位
当MAT0=1时,PCA计数值与模块的比较/捕获寄存器的值的匹配将置位CCON寄存器的中断标志位CCF0。 - TOG0: 翻转控制位
当TOG0=1时,工作在PCA高速脉冲输出 PCA计数器的值与模块的比较/捕获
寄存器的值的匹配将使CCP0脚翻转。
(CCP0/PCA0/PWM0/P1.1或CCP0_2/PCA0/PWM0/P3.5或CCP0_3/PCA0/PWM0/P2.5) - PWM0: 脉宽调节模式。
当PWM0=1时, CCP0脚用作脉宽调节输出。
(CCP0/PCA0/PWM0/P1.1或CCP0_2/PCA0/PWM0/P3.5或CCP0_3/PCA0/PWM0/P2.5)
ECCF0: 使能CCF0中断。使能寄存器CCON的比较/捕获标志CCF0, 用来产生中断。
还有 CCAPM1 ,CCAPM2与上面的CCAPM0差不多
4. PCA的16位计数器 — 低8位CL和高8位CH
- CL和CH地址分别为E9H和F9H,复位值均为00H,用于保存PCA的装载值。
5. PCA捕捉/比较寄存器 — CCAPnL(低位字节)和CCAPnH(高位字节)
当PCA模块用于捕获或比较时,它们用于保存各个模块的16位捕捉计数值;当PCA模块用
于PWM模式时,它们用来控制输出的占空比。其中,n=0、1、2,分别对应模块0、模块1和模
块2。复位值均为00H。它们对应的地址分别为:
CCAP0L — EAH、CCAP0H — FAH:模块0的捕捉/比较寄存器。
CCAP1L — EBH、CCAP1H — FBH:模块1的捕捉/比较寄存器。
CCAP2L — ECH、CCAP2H — FCH:模块2的捕捉/比较寄存器。
6. PCA模块PWM寄存器PCA_PWM0、PCA_PWM1和PCA_PWM2
- EPC0H:在PWM模式下,与CCAP0H组成9位数。
- EPC0L:在PWM模式下,与CCAP0L组成9位数。
PCA模块的工作模式设定表如下表所列:
将单片机的CCP/PWM/PCA功能在3组管脚之间切换的寄存器AUXR1(P_SW1)
- 辅助寄存器1的格式
CCP/PWM/PCA模块的结构
- STC15系列部分单片机有3路可编程计数器阵列CCP/PCA/PWM(通过AUXR1/P_SW1寄存器可以设置CCP/PCA/PWM从P1口切换到P2口切换到P3口)。
- PCA含有一个特殊的16位定时器,有3个16位的捕获/比较模块与之相连 ,如下图所示。
- 每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器,高速脉冲输出或可调制脉冲输出。
- 寄存器CH和CL的内容是正在自由递增计数的16位PCA定时器的值。PCA定时器是3个模块的公共时间基准,可通过编程工作在:1/12系统时钟、1/8系统时钟、1/6系统时钟、1/4系统时钟、1/2系统时钟、系统时钟、定时器0溢出或ECI脚的输入(STC15W4K60S4系列在P1.2或P2.4或P3.4口)。定时器的计数源由CMOD特殊功能寄存器中的CPS2,CPS1和CPS0位来确定(见CMOD特殊功能寄存器说明)。
- CMOD特殊功能寄存器还有2个位与PCA相关。它们分别是:CIDL,空闲模式下允许停止PCA;ECF,置位时,使能PCA中断,当PCA定时器溢出将PCA计数溢出标志CF(CC0ON.7)置位。
- CCON特殊功能寄存器包含PCA的运行控制位(CR)和PCA定时器标志(CF)以及各个模块的标志(CCF2/CCF1/CCFO)。通过软件置位CR位(CCON.6)来运行PCA。CR位被清零时PCA关闭。
- 当PCA计数器溢出时,CF位(CCON.7)置位,如果CMOD寄存器的ECF位置位,就产生中断。CF位只可通过软件清除。CCON寄存器的位0~2是PCA各个模块的标志(位0对应模块0,位1对应模块1,位2对应模块2),当发生匹配或比较时由硬件置位。这些标志也只能通过软件清除。所有模块共用一个中断向量。PCA的中断系统如图所示。
- PCA的每个模块都对应一个特殊功能寄存器。它们分别是:模块0对应CCAPMO,模块1对应CCAPM1,模块2对应CCAPM2,特殊功能寄存器包含了相应模块的工作模式控制位。
- 当模块发生匹配或比较时,ECCFn位(CCAPMn.0,n=0,1,2由工作的模块决定)使能CCON特殊功能寄存器的CCFn标志来产生中断。
- PWM(CCAPMn.1)用来使能脉宽调制模式。
- 当PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果T0G位(CCAPMn.2)置位,模块的CCPn输出将发生翻转。
- 当PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果匹配位MATn(CCAPlMn.3)置位,CCON寄存器的CCFn位将被置位。
- CAPNn(CCAPMn.4)和CAPPn(CCAPMn.5)用来设置捕获输入的有效沿。CAPNn位使能下降沿有效,CAPPn位使能上升沿有效。如果两位都置位,则两种跳变沿都被使能,捕获可在两种跳变沿产生。
- 通过置位CCAPMn寄存器的ECOMn位(CCAPMn.6)来使能比较器功能。
- 每个PCA模块还对应另外两个寄存器,CCAPnH和CCAPnL。当出现捕获或比较时,它们用来保存16位的计数值。当PCA模块用在PWM模式中时,它们用来控制输出的占空比。
CCP/PCA模块的工作模式
捕获模式
PCA模块工作于捕获模式的结构图如下图所示。要使一个PCA模块工作在捕获模式,寄存器CCAPMn的两位(CAPNn和CAPPn)或其中任何一位必须置1。PCA模块工作于捕获模式时,对模块的外部CCPn输入(CCPO/P1.1,CCP1/P1.0,CCP2/P3.7)的跳变进行采样。当采样到有效跳变时,PCA硬件就将PCA计数器阵列寄存器(CH和CL)的值装载到模块的捕获寄存器中(CCAPnL和CCAPnH)。
如果CCON特殊功能寄存器中的位CCFn和CCAPMn特殊功能寄存器中的位ECCFn位被置位,将产生中断。可在中断服务程序中判断哪一个模块产生了中断,并注意中断标志位的软件清零问题。
16位软件定时器模式
通过置位CCAPMn寄存器的ECOM和MAT位,可使PCA模块用作软件定时器(上图)。PCA定时器的值与模块捕获寄存器的值相比较,当两者相等时,如果位CCFn(在CCON特殊功能寄存器中)和位ECCFn(在CCAPMn特殊功能寄存器中)都置位,将产生中断。
[CH,CL]每隔一定的时间自动加1,时间间隔取决于选择的时钟源。例如,当选择的时
钟源为SYSclk/12,每12个时钟周期[CH,CL]加1。当[CH,CL]增加到等于[CCAPnH, CCAPnL]
时,CCFn=1,产生中断请求。如果每次PCA模块中断后,在中断服务程序中断给[CCAPnH,
CCAPnL]增加一个相同的数值,那么下次中断来临的间隔时间T也是相同的,从而实现了定时
功能。定时时间的长短取决于时钟源的选择以及PCA计数器计数值的设置。下面举例说明PCA
计数器计数值的计算方法。
假设,系统时钟频率SYSclk = 18.432MHz,选择的时钟源为SYSclk/12,定时时间T为5ms,则
PCA计数器计数值为:
PCA计数器的计数值 = T / (( 1 / SYSclk )×12 ) = 0.005 / (( 1 / 18432000)×12 ) = 7680 (10进制数)
= 1E00H (16进制数)
也就是说,PCA计数器计数1E00H次,定时时间才是5ms,这也就是每次给[CCAPnH,
CCAPnL]增加的数值(步长)。
高速脉冲输出模式
该模式中(下图),当PCA计数器的计数值与模块捕获寄存器的值相匹配时,PCA模块的CCPn输出将发生翻转。要激活高速脉冲输出模式,CCAPMn寄存器的TOGn,MATn和ECOMn位必须都置位。
CCAPnL的值决定了PCA模块n的输出脉冲频率。当PCA时钟源是SYSclk/2时,输出脉冲的
频率F为:
f = SYSclk / ( 4×CCAPnL )
其中,SYSclk为系统时钟频率。由此,可以得到CCAPnL的值CCAPnL = SYSclk / ( 4×f ).
如果计算出的结果不是整数,则进行四舍五入取整,即
CCAPnL = INT (SYSclk / ( 4×f ) + 0.5 )
其中,INT( )为取整运算,直接去掉小数。例如,假设SYSclk = 20MHz,要求PCA高速脉
冲输出125kHz的方波,则CCAPnL中的值应为:
CCAPnL = INT (20000000 / ( 4×125000 ) + 0.5 ) = INT ( 40 + 0.5 ) = 40 = 28H
脉宽调节模式(PWM)
- 脉宽调制(PWM,Pulse Width Modulation)是一种使用程序来控制波形占空比、周期、相位
波形的技术,在三相电机驱动、D/A转换等场合有广泛的应用。
STC15系列单片机的PCA模块可以通过设定各自的寄存器PCA_PWMn (n=0,1,2.下同)中的位EBSn_1/PCA_PWMn.7及EBSn_0/PCA_PWMn.6,使其工作于8位PWM或7位PWM或6位PWM模式。
- 8位脉宽调节模式(PWM)
当[EBSn_1,EBSn_0]=[0,0]或[1,1]时,PCA模块n工作于8位PWM模式,此时将{0,CL[7:0]}与捕获寄存器[EPCnL,CCAPnL[7:0]]进行比较。PWM模式的结构如下图所示。
- 当PCA模块工作于8位PWM模式时,由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器{EPCnL,CCAPnL[7:0]}有关。当{0,CL[7:0]}的值小于{EPCnL,CCAPnL[7:0]}时,输出为低; {0,CL[7:0]}的值等于或大于{EPCnL,CCAPnL[7:0]}时,输出为高。当CL的值由FF变为00溢出时,{EPCnH,CCAPnH[7:0]}的内容装载到{EPCnL,CCAPnL[7:0]}中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。
- 当PWM是8位的时:
PCA时钟输入源可以从以下8种中选择一种:SYSclk, SYSclk/2, SYSclk/4,SYSclk/6,
SYSclk/8,SYSclk/12,定时器0的溢出,ECI/P1.2输入
举例: PCA模块工作于8位PWM模式。 PWM输出频率为38KHz,选SYSclk为PCA/
PWM时钟输入源,求出SYSclk的值
由计算公式38000=SYSclk/256 ,得到外部时钟频率SYSclk=38000 x 256 x 1=9,728,000
如果要实现可调频率的PWM输出,可选择定时器0的溢出率或者ECI脚的输入作为PCA/PWM
的时钟输入源。
当EPCnL = 0及CCAPnL = 00H时,PWM固定输出高
当EPCnL = 1及CCAPnL = FFH时,PWM固定输出低
当某个I/O口作为PWM使用时,该口的状态:
7位脉宽调节模式(PWM)
当[EBSn_1,EBSn_0]=[0,1]时,PCA模块n工作于7位PWM模式,此时将{0,CL[6:0]}与捕获寄存器[EPCnL,CCAPnL[6:0]]进行比较。PWM模式的结构如下图所示。
当PCA模块工作于7位PWM模式时,由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器{EPCnL,CCAPnL[6:0]}有关。当{0,CL[6:0]}的值小于{EPCnL,CCAPnL[6:0]}时,输出为低; {0,CL[6:0]}的值等于或大于{EPCnL,CCAPnL[6:0]}时,输出为高。当CL的值由7F变为00溢出时,
{EPCnH,CCAPnH[6:0]}的内容装载到{EPCnL,CCAPnL[6:0]}中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。
- 当PWM是7位的时:
PCA时钟输入源可以从以下8种中选择一种:SYSclk, SYSclk/2, SYSclk/4,SYSclk/6,
SYSclk/8,SYSclk/12,定时器0的溢出,ECI/P1.2输入。
举例:设PCA模块工作于7位PWM模式。要求PWM输出频率为38KHz,选SYSclk为PCA/
PWM时钟输入源,求出SYSclk的值。
由计算公式38000=SYSclk/128,得到外部时钟频率SYSclk=38000×128×1=4,864,000如果要实现可调频率的PWM输出,可选择定时器0的溢出率或者ECI脚的输入作为PCA/PWM的时钟输入源
当EPCnL=0及CCAPnL=80H时,PWM固定输出高当EPCnL=1及CCAPnL=OFFH时,PWM固定输出低
- 6位脉宽调节模式(PWM)
当[EBSn_1,EBSn_0]=[1,0]时,PCA模块n工作于6位PWM模式,此时将{0,CL[5:0]}与捕获寄存器[EPCnL,CCAPnL[5:0]]进行比较。PWM模式的结构如下图所示。
当PCA模块工作于6位PWM模式时,由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器{EPCnL,CCAPnL[5:0]}有关。当{0,CL[5:0]}的值小于{EPCnL,CCAPnL[5:0]}时,输出为低; {0,CL[5:0]}的值等于或大于{EPCnL,CCAPnL[5:0]}时,输出为高。当CL的值由3F变为00溢出时,
{EPCnH,CCAPnH[5:0]}的内容装载到{EPCnL,CCAPnL[5:0]}中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。
- 当PWM是6位的时:
- PCA时钟输入源可以从以下8种中选择一种:SYSclk,SYSclk/2,SYSclk/4,SYSclk/6,SYSclk/8,SYSclk/12,定时器0的溢出,ECI/P1.2输入。
举例:设PCA模块工作于6位PWM模式。要求PWM输出频率为38KHz,选SYSclk为PCA/PWM时钟输入源,求出SYSclk的值。
由计算公式38000=SYSclk/64,得到外部时钟频率SYSclk=38000×64x1=2,432,000如果要实现可调频率的PWM输出,可选择定时器0的溢出率或者ECI脚的输入作为PCA/PWM的时钟输入源
- 当EPCnL=0及CCAPnL=0C0H时,PWM固定输出高当EPCnL=1及CCAPnL=0FFH时,PWM固定输出低。
示例程序
用CCP/PCA功能扩展外部中断的测试程序
//假定测试芯片的工作频率为18.432MHz
#include "reg51.h"
#include "intrins.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
sfr P_SW1 = 0xA2; //外设功能切换寄存器1
#define CCP_S0 0x10 //P_SW1.4
#define CCP_S1 0x20 //P_SW1.5
sfr CCON = 0xD8; //PCA控制寄存器
sbit CCF0 = CCON^0; //PCA模块0中断标志
sbit CCF1 = CCON^1; //PCA模块1中断标志
sbit CR = CCON^6; //PCA定时器运行控制位
sbit CF = CCON^7; //PCA定时器溢出标志
sfr CMOD = 0xD9; //PCA模式寄存器
sfr CL = 0xE9; //PCA定时器低字节
sfr CH = 0xF9; //PCA定时器高字节
sfr CCAPM0 = 0xDA; //PCA模块0模式寄存器
sfr CCAP0L = 0xEA; //PCA模块0捕获寄存器 LOW
sfr CCAP0H = 0xFA; //PCA模块0捕获寄存器 HIGH
sfr CCAPM1 = 0xDB; //PCA模块1模式寄存器
sfr CCAP1L = 0xEB; //PCA模块1捕获寄存器 LOW
sfr CCAP1H = 0xFB; //PCA模块1捕获寄存器 HIGH
sfr PCAPWM0 = 0xf2;
sfr PCAPWM1 = 0xf3;
sbit PCA_LED = P1^0; //PCA测试LED
void PCA_isr() interrupt 7 using 1
{CCF0 = 0; //清中断标志PCA_LED = !PCA_LED; //测试LED取反
}
void main()
{ACC = P_SW1;ACC &= ~(CCP_S0 | CCP_S1); //CCP_S0=0 CCP_S1=0P_SW1 = ACC; //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)// ACC = P_SW1;
// ACC &= ~(CCP_S0 | CCP_S1); //CCP_S0=1 CCP_S1=0
// ACC |= CCP_S0; //(P3.4/ECI_2, P3.5/CCP0_2, P3.6/CCP1_2, P3.7/CCP2_2)
// P_SW1 = ACC;
// ACC = P_SW1;
// ACC &= ~(CCP_S0 | CCP_S1); //CCP_S0=0 CCP_S1=1
// ACC |= CCP_S1; //(P2.4/ECI_3, P2.5/CCP0_3, P2.6/CCP1_3, P2.7/CCP2_3)
// P_SW1 = ACC;
CCON = 0; //初始化PCA控制寄存器//PCA定时器停止//清除CF标志//清除模块中断标志CL = 0; //复位PCA寄存器CH = 0;CMOD = 0x00; //设置PCA时钟源//禁止PCA定时器溢出中断CCAPM0 = 0x11; //PCA模块0为下降沿触发
// CCAPM0 = 0x21; //PCA模块0为上升沿沿触发
// CCAPM0 = 0x31; //PCA模块0为上升沿/下降沿触发CR = 1; //PCA定时器开始工作EA = 1;while (1);
}
世界上有条很长的路叫做梦想,还有堵很高的墙叫做现实 |
---|
STC15系列CCP/PWM/PCA介绍相关推荐
- STC15系列增强型PWM学习记录
之前学习使用51特殊寄存器配置成PWM去驱动舵机和电机还有呼吸灯,总结一下的知识点. 一.相关介绍(见上图标志处) 见左侧图可加深对上图文字理解,配置PWM时钟选择寄存器(PWMCKS),选择系统分频 ...
- STC15系列单片机-PWM模块
STC15W内部集成了一个15位的PWM模块, 可以6路独立输出. 此外PWM模块每一路都有两个用于控制波形翻转的计数器T1和T2, 可以灵活地控制每路PWM的高低电平宽度, 从而实现对PWM占空比的 ...
- STC15单片机-通过PWM调整灯亮度
通过PWM调整灯亮度 学习经验 第一次去看STC15数据手册的CCP/PCA/PWM这一章时人都懵了,这到底是个啥玩意?首先是不懂为什么要叫这个名字,CCP/PCA/PWM是一个名字还是三个名字?后来 ...
- STC15系列PWM中断控制寄存器介绍以及PWM相关示例
STC15系列PWM中断控制寄存器介绍以及PWM呼吸灯代码实现
- STC15系列PWM相关功能寄存器介绍
STC15系列PWM相关功能寄存器介绍 ✨以下数据来源于stc15手册.
- stc15系列c语言pwm编程,STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现.docx...
STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现 STC单片机增强型PWM发生器原理及应用主 讲:何宾Email:hebin@mail.buct.edu.cn2016.03增强 ...
- 关于STC8A8K64S4A12(STC15系列升级版)例程中程序出现 'xxx' undefined identifier的问题解决办法
关于STC8A8K64S4A12(STC15系列升级版)例程中程序出现 'xxx' undefined identifier的问题解决办法 最近上网买了一款STC8A8K64S4A12最小系统版学习, ...
- 【VSCode PlatformIO】STC15系列单片机开发专用头文件内容分享
[VSCode PlatformIO]STC15系列单片机开发专用头文件内容分享 如果使用VSCode PlatformIO开发STC单片机,所提供的型号的头文件很有限,除非自己添加,像STC系列单片 ...
- 西门子S7-200系列可编程控制器介绍
西门子S7-200系列可编程控制器介绍 本章要点 l 西门子S7-200 CPU224可编程控制器的结构.性能指标 l 西门子S7-200 CPU224可编程控制器工作方式 l 扩展模块介绍 l S7 ...
最新文章
- mobile_numen_3
- 智游推送教你如何使用统计图表辅助运营
- 内容提供器(Content-Provider)完整使用指南
- ITK:使用二项式内核模糊图像
- C++new和delete运算符
- mysql锁表_MySQL中Alter table 你不知道的性能问题
- python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...
- mc服务器右上角信号格,手机右上角的网络信号标识是什么意思?
- 20201015:力扣第210场周赛题解(上)
- Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析
- 用闭包方式实现点击a标签弹也索引值
- java循环怎么分析_Java for循环的几种用法分析
- Dictionary 索引超出数组界限
- android SDK安装以及环境变量配置(windows)
- 中国银行 网银 控件造成 IE8 崩溃的解决办法
- 计算机设置从u盘启动怎么办,如何进入bios设置u盘启动为优先启动项
- HotSpot GC及参数设置
- 多约束条件求最优值matlab,[MATLAB数学相关] 请教,约束条件下多元函数最小值的求解...
- linu学习第二天:文件系统相关操作
- 【Jquery手风琴】
热门文章
- 【开发心得】架构企业OA平台只需3步
- android studio禁用硬件加速,Android Studio:硬件加速
- Toshiba L700 拆机记录
- Linux top命令参数详解
- 小罐茶背后的男人:“包办”了我的童年少年中年……
- um是代表什么意思_梦见厕所很脏全是屎是什么意思,好不好,代表什么
- 抖音运营的四个彩蛋思维
- 启动Fiddler导致浏览器显示“您的连接不是私密连接”
- 微信小程序使用wx.redirectTo跳转页面时出现小房子图标解决方法
- 如何压缩并预览Office文件(Word、PowerPoint和Excel)