STM32—定时器知多少

这里写目录标题

    • STM32---定时器知多少
  • 定时器的分类
    • 定时器的工作原理
      • 定时器的应用

定时器的分类

定时器的分类
定时器的类型可以查看STM32F1XX中文参考手册的第14,15,16章节,里面对定时器的知识有详细的介绍。

STM32F1系列的开发板一共有8个定时器,按照功能的不同可以分为:

高级定时器(TIM1、TIM8)

通用定时器(TIM2、TIM3、TIM4、TIM5)

基本定时器(TIM6、TIM7)

看门狗定时器

SysTick定时器

他们之间的区别情况见下表:

在这里插入图片描述

定时器的工作原理

1 高级定时器简介
TIM1 和 TIM8 简介
高级控制定时器(TIM1 和 TIM8)包含一个 16 位自动重载计数器,该计数器由可编程预分频器驱动
此类定时器可用于各种用途,包括测量输入信号的脉冲宽度(输入捕获),或者生成输出波形(输出比较、PWM 和带死区插入的互补 PWM)。
使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。
高级控制定时器(TIM1 和 TIM8)和通用 (TIMx) 定时器彼此完全独立,不共享任何资源。

14.2 TIM1 和 TIM8 主要特性
TIM1 和 TIM8 定时器具有以下特性:
● 16 位递增、递减、递增/递减自动重载计数器。
● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。
● 多达 4 个独立通道,可用于:
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出
● 带可编程死区的互补输出。
● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。
● 重复计数器,用于仅在给定数目的计数器周期后更新定时器寄存器。
● 用于将定时器的输出信号置于复位状态或已知状态的断路输入。
● 发生如下事件时生成中断/DMA 请求:
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较
— 断路输入
● 支持定位用增量(正交)编码器和霍尔传感器电路。
● 外部时钟触发输入或逐周期电流管理。

STM32F103中有TIM1,TIM8两个高级定时器,每一定时器都有
一个16位向上、向下、向上/下自动装载计数器

一个16位预分频器和四个独立从输入输出通道

每一个通道都可用于输入捕获、输出比较、PWM和单脉冲模式(除了基本定时器,高级定时器和通用定时器都能产生PWM)

单片机中没有时间的概念,因此定时器本质是一个以单位时间为准的计数器,计数值可以从0开始累加,也可以从一个设定值(ARR)的值递减,每隔一个固定的时间(由psc和时钟周期控制)计数器的值+1或-1,加到或减到头时会产生一个溢出信号,此时计数器的计数值清零或补充成初值,重新开始计数。

高级定时器框图

在这里插入图片描述
1 时钟源

由四个时钟来源,分别是

内部时钟源 CK_INT
外部时钟模式 1:外部输入引脚 TIx(x=1,2,3,4)
外部时钟模式 2:外部触发输入 ETR
内部触发输入(ITRx)

我们一般只用内部时钟源CK_INT,对于高级定时器,其时钟是由APB2总线时钟决定的
在这里插入图片描述

其他类型的定时器同理可以参考参考手册的RCC部分的时钟框图。

2 控制器

用来控制和发送命令的相关的寄存器有

CR1(control register 1 )控制寄存器1
CR2(control register 2 )控制寄存器2
SMCR(slave mode control register)从模式控制寄存器

CCER(capture/compare enable register)捕获比较寄存器

3 时基单元Time-base unit

在这里插入图片描述

时基单元的组成:
1)1-16位的预分频器 PSC
对控制计数器的时钟进行分频,分配系数可以为1~65536。

2)16位的计数器CNT
每经过一个计数器时钟周期这里变化1(+1或-1)。

(3)4-16位的自动重装载寄存器ARR
向上计数时,但计数器的值CNT从0计数到ARR的值的时候,会产生溢出中断(也叫更新中断,update interrupt),然后会清零重新计数向下计数时,当计数器的值CNT从ARR的值计数到0的时候会产生溢出中断,然后会重新填充ARR的值。
(4)8位的重复计数器RCR(高级定时器独有的,基本和基础定时器都没有)
向上计数时,我们把REO的值设置成10,如果有设置当计数器溢出的时候,那么此时不会产生中断,而是RCR的值+1,当加到10的时候才产生中断,向下 计数原理类似,只不过是从10减到0。

4 输入捕获

在这里插入图片描述
输入捕获可以对输入的信号的上升沿下降沿或者双边沿进行捕获,常用的有测量输入信号的脉宽和测量 PWM 输入信号的频率和占空比这两种。
输入捕获的大概原理:
输入引脚检测到电平跳变时(上升沿或下降沿),把计数器CNT的值锁存到捕获寄存器CCRx中,把前后两次捕获到的 CCR x寄存器中的值相减,就可以算出脉宽或者频率

(1)输入通道引脚
需要测量的信号从TIMx_CH1~4进入

(2)输入滤波器和边沿检测器
信号受到干扰时,滤波器可以对输入信号进行滤波,即进行重新采样。

滤波器的配置由 CR1 寄存器的位 CKD[1:0]和 CCMR1/2 的位 ICxF[3:0]控制。

边沿检测器用来设置信号在捕获的时候是什么边沿有效,可以是上升沿,下降沿,或者是双边沿,由 CCER 寄存器的位 CCxP 和 CCxNP 决定。
在这里插入图片描述

(3)捕获通道

捕获通道就是图中的 IC1/2/3/4,每个捕获/比较通道都有相对应的捕获寄存器 CCR1/2/3/4,当发生捕获的时候,计数器 CNT 的值就会被锁存到捕获寄存器中。

在这里插入图片描述
(4)预分频器

ICx 的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。具体的由寄存器 CCMRx 的位 ICxPSC 配置。

如果希望捕获信号的每一个边沿,则不分频。

在这里插入图片描述

(5)捕获寄存器
经过预分频器的信号 ICxPS 是最终被捕获的信号。

当发生捕获时(第一次),计数器CNT 的值会被锁存到捕获寄存器 CCR 中,还会产生 CCxI 中断,相应的中断位 CCxIF(在SR 寄存器中)会被置位,通过软件或者读取 CCR 中的值可以将 CCxIF 清 0。

如果发生第二次捕获(即重复捕获: CCR 寄存器中已捕获到计数器值且 CCxIF 标志已置 1),则捕获溢出标志位 CCxOF(在 SR 寄存器中)会被置位, CCxOF 只能通过软件清零。

5.输出比较

在这里插入图片描述

通过定时器的外部引脚对外输出控制信号。
有八种模式,主要使用的是其PWM1和PWM2模式。
具体使用哪种模式由寄存器 CCMRx 的位 OCxM[2:0]配置。

在这里插入图片描述
(1)比较寄存器
比较寄存器与捕获寄存器是同一个寄存器。

计数器 CNT 的值跟比较寄存器 CCR 的值相等的时候,输出参考信号 OCxREF 的信号的极性就会改变( OCxREF=1(高电平)称之为有效电平, OCxREF=0(低电平)称之为无效电平)。会产生比较中断 CCxI,相应的标志位 CCxIF(SR 寄存器中(状态寄存器,里面有各种状态或中断标记))会置位。

(2)死区发生器

在生成的参考波形 OCxREF 的基础上,可以插入死区时间,用于生成两路互补的输出信号 OCx 和 OCxN(OCxN的波形与OCx的相反)。

在这里插入图片描述

死区时间的大小具体由 BDTR 寄存器的位 DTG[7:0]配置

在这里插入图片描述

这里的T_ DTS是由内部时钟T_CK_INT经过分频得到的,由CR1寄存器上的CKD[9:8]位控制的。

在这里插入图片描述

(3)输出控制

(4)输出引脚

输出比较的输出信号最终是通过定时器的外部 IO 来输出的,分别为 CH1/2/3/4,其中
前面三个通道还有互补的输出通道 CH1/2/3N。

在这里插入图片描述

2 STM32的通用定时器

通用定时器功能特点描述

STM32的通用定时器是由一个可编程预分频器(PSC)驱动的16位自动重装载计数器(CNT)构成,可用于测量输入脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。

STM32的通用TIMx(TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括:

位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上);

16位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT);

16位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数 为 1~65535 之间的任意数值;

4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:
输入捕获
输出比较
PWM生成(边缘或中间对齐模式)
单脉冲模式输出

可使用外部信号**(TIMx_ETR)控制定时器**和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。

如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器):
1 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
2 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
3 输入捕获
4 输出比较
5 支持针对定位的增量(正交)编码器和霍尔传感器电路
6 触发输入作为外部时钟或者按周期的电流管理

STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。

使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。
STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源

计数器模式
通用定时器可以向上计数、向下计数、向上向下双向计数模式。

向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。

向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。

中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。

简单地理解三种计数模式,可以通过下面的图形:

在这里插入图片描述

通用定时器工作流程

在这里插入图片描述
对于这个定时器框图,分成四部分来讲:最顶上的一部分(计数时钟的选择)、中间部分(时基单元)、左下部分(输入捕获)、右下部分(PWM输出)。

计数时钟的选择
计数器时钟可由下列时钟源提供:

内部时钟(TIMx_CLK)
外部时钟模式1:外部捕捉比较引脚(TIx)
外部时钟模式2:外部引脚输入(TIMx_ETR)
内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。

内部时钟源

在这里插入图片描述

从图中可以看出:由AHB时钟经过APB1预分频系数转至APB1时钟,再通过某个规定转至TIMxCLK时钟(即内部时钟CK_INT、CK_PSC)。最终经过PSC预分频系数转至CK_CNT。

那么APB1时钟怎么转至TIMxCLK时钟呢?除非APB1的分频系数是1,否则通用定时器的时钟等于APB1时钟的2倍。

例如:默认调用SystemInit函数情况下:SYSCLK=72M、AHB时钟=72M、APB1时钟=36M,所以APB1的分频系数=AHB/APB1时钟=2。所以,通用定时器时钟CK_INT=2*36M=72M。最终经过PSC预分频系数转至CK_CNT。

由于高级定时器与通用定时器的时钟不同,上面重点介绍时钟源,对于时基单元,计数模式,定时器相关的寄存器,以及控制寄存器都大体相同,大家可以参考高级定时器的寄存器介绍。

通用定时器超时时间

超出(溢出)时间计算:

Tout=(ARR+1)(PSC+1)/TIMxCLK

其中:Tout的单位为us,TIMxCLK的单位为MHz。

这里需要注意的是:PSC预分频系数需要加1,同时自动重加载值也需要加1。

为什么自动重加载值需要加1,因为从ARR到0之间的数字是ARR+1个;
为什么预分频系数需要加1,因为为了避免预分频系数不设置的时候取0的情况,使之从1开始。
这里需要和之前的预分频进行区分:由于通用定时器的预分频系数为1~65535之间的任意数值,为了从1开始,所以当预分频系数寄存器为0的时候,代表的预分频系数为1。而之前的那些预分频系数都是固定的几个值,比如1、4、8、16、32、64等等,而且可能0x000代表1,0x001代表4,0x010代表8等等。也就是说,一边是随意的定义(要从1开始),另一边是宏定义了某些值(只有特定的一些值)。

比如,想要设置超出时间为500ms,并配置中断,TIMxCLK按照系统默认初始化来(即72MHz),PSC取7199,由此可以计算出ARR为4999。

也就是说,在内部时钟TIMxCLK为72MHz,预分频系数为7199的时候,从4999递减至0的事件是500ms。

以上就是通用定时器的基本原理介绍,如有疑问可以参考STM32F4中文参考手册。

3 STM32基本定时器

基本定时器定时器(TIM6 和 TIM7)不仅可用作通用定时器以生成时基,还可以专门用于驱动数模转换器 (DAC)。实际上,此类定时器内部连接到 DAC 并能够通过其触发输出驱动 DAC
这些定时器彼此完全独立,不共享任何资源。

TIM6 和 TIM7 的主要特性
基本定时器(TIM6 和 TIM7)的特性包括:
● 16 位自动重载递增计数器。
● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 和 65536 之间。
● 用于触发 DAC 的同步电路。
● 发生如下更新事件时会生成中断/DMA 请求:计数器上溢.。

在这里插入图片描述

以上就是对定时器工作原理的基本介绍,如果还有疑问可以查询STM32F4XX中文参考手册,里面有详细的介绍和讲解。

定时器的应用

定时器的应用的应用场景有很多种,如下所示:

1 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
2 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
3 输入捕获
4 输出比较
5 支持针对定位的增量(正 交)编码器和霍尔传感器电路
6 触发输入作为外部时钟或者按周期的电流管理

下面我重点给大家展示以下三个实验
1 定时器中断实验
2 PWM输出实验
3 输入捕获实验

定时器中断实验

接下来我们以通用定时器 TIM3 为实例,来说明要经过哪些步骤,才能达到这个要求,并产生中断。
1 )TIM3 时钟使能。
这里我们通过 APB1ENR 的第 1 位来设置 TIM3 的时钟,因为 Stm32_Clock_Init 函数里面把APB1的分频设置为2了,所以我们的TIM3时钟就是APB1时钟的2倍等于系统时钟(72M)
2 )设置 TIM3_ARR 和 和 TIM3_PSC 的值
通过这两个寄存器,我们来设置自动重装的值,以及分频系数。这两个参数加上时钟频率就决定了定时器的溢出时间。
3 )设置 TIM3_DIER 允许更 新中断
因为我们要使用 TIM3 的更新中断,所以设置 DIER 的 UIE 位为 1,使能更新中断。
4 )允许 TIM3 工作
光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器,通过 TIM3_CR1 的 CEN 位来设置。
5 )TIM3 中断分组设置
在定时器配置完了之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,以使能TIM3 中断。
6 )编写中断服务函数
在最后,还是要编写定时器中断服务函数,通过该函数来处理定时器产生的相关中断。在中断产生后,通过状态寄存器的值来判断此次产生的中断属于什么类型。然后执行相关的操作,我们这里使用的是更新(溢出)中断,所以在状态寄存器 SR 的最低位。在处理完中断之后应该向 TIM3_SR 的最低位写 0,来清除该中断标志。

定时器中断实现步骤:

1 使能定时器时钟。
RCC_APB1PeriphClockCmd();
② 初始化定时器,配置ARR,PSC。
TIM_TimeBaseInit();
③ 开启定时器中断,配置NVIC。
NVIC_Init();
④ 使能定时器。
TIM_Cmd();
⑥ 编写中断服务函数。
TIMx_IRQHandler();

void TIME3_Init(u16 arr,u16 psc)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseStructure.TIM_Period=arr;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值	TIM_TimeBaseStructure.TIM_Prescaler=psc;//设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//TIM3中断NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;  //先占优先级2级NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//从优先级0级NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM3,ENABLE);	
}
void TIM3_IRQHandler(void)
{if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否		{LED1=!LED1;TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx更新中断标志 }
}

PWM输出实验

本节要实现通过 TIM3_CH1 输出PWM 来控制 DS0 的亮度。下面我们介绍配置步骤:
1) )启 开启 TIM1 时钟,配置 PB5 为复用输出。要使用 TIM1,我们必须先开启 TIM1 的时钟(通过 APB2ENR 设置),这点相信大家看了这么多代码,应该明白了。这里我们还要配置 PB5 为复用输出,这是因为 TIM3_CH1 通道将使用 PB5 的复用功能作为输出。

2 ))设置 TIM3 的 的 ARR 和 和 PSC 。
在开启了 TIM3的时钟之后,我们要设置 ARR 和 PSC 两个寄存器的值来控制输出 PWM 的周期。当 PWM 周期太慢(低于 50Hz)的时候,我们就会明显感觉到闪烁了。因此,PWM 周期在这里不宜设置的太小。
3) )置设置 TIM3_CH1 的 的 PWM 模式 及通道方向。

接下来,我们要设置 TIM3_CH1 为 PWM 模式(默认是冻结的),因为我们的 DS0 是低电平亮,而我们希望当 CCR1 的值小的时候,DS0 就暗,CCR1 值大的时候,DS0 就亮,所以我们要通过配置 TIM1_CCMR1 的相关位来控制 TIM3_CH1 的模式。另外,我们要配置 CH1 为输出,所以要设置 CC1S[1:0]为 00(寄存器默认就是 0,所以这里可以省略)。

4) )能 使能 TIM3 的 的 CH1 输出,使能 TIM3。
接下来,我们需要开启 TIM3 的通道 1 的输出以及 TIM3的时钟。前者通过 TIM3_CCER来设置,是单个通道的开关,而后者则通过 TIM3_CR1 来设置,是整个 TIM13的总开关。只有设置了这两个寄存器,这样我们才可能在 TIM1 的通道 1 上看到 PWM 波输出。

5) ) 设置 MOE 输出,使能 PWM 输出。 。
普通定时器在完成以上设置了之后,就可以输出 PWM 了,但是高级定时器,我们还需要使能刹车和死区寄存器(TIM1_BDTR)的 MOE 位,以使能整个 OCx(即 PWM)输出。

6) )改 修改 TIM3_CCR1 来控制占空比。
最后,在经过以上设置之后,PWM 其实已经开始输出了,只是其占空比和频率都是固定的,而我们通过修改 TIM3_CCR1 则可以控制 CH1 的输出占空比。继而控制 DS0 的亮度。
通过以上 6 个步骤,我们就可以控制 TIM3 的 CH1 输出 PWM 波了。

简化上面的过程就是:
1 使能定时器14和相关IO口时钟。
使能定时器14时钟:RCC_APB1PeriphClockCmd();
使能GPIOF时钟:RCC_AHB1PeriphClockCmd ();
2 初始化IO口为复用功能输出。函数:GPIO_Init();
3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
GPIOF9复用映射到定时器14
GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);
4 初始化定时器:ARR,PSC等:TIM_TimeBaseInit();
5 初始化输出比较参数:TIM_OC1Init();
6 使能预装载寄存器: TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable);
7 使能自动重装载的预装载寄存器允许位TIM_ARRPreloadConfig(TIM14,ENABLE);
8 使能定时器。
9 不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare1();

void TIME3_PWM_Init(u16 arr,u16 psc)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;//结构体声明RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);	//使能定时器3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);TIM_TimeBaseStructure.TIM_ClockDivision=0;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_Period=arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;//PWM模式1或者模式2TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//比较输出极性TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//输出使能 OR失能
//		TIM_OCInitStructure.TIM_Pulse=100;//比较值,写CCRxTIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器 TIM_Cmd(TIM3, ENABLE);  //使能TIM3
}int main(void){	delay_init();	    //延时函数初始化	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);uart_init(115200);LED_Init();		  	//初始化与LED连接的硬件接口BEEP_Init();TIME3_Init(4999,7199);TIME3_PWM_Init(899,0);KEY_Init();LCD_Init();while(1){delay_ms(10);	 if(dir)led0pwmval++;else led0pwmval--;if(led0pwmval>500)dir=0;if(led0pwmval==0)dir=1;										 TIM_SetCompare2(TIM3,led0pwmval);		   }}	

输入捕获实验

下面我们介绍输入捕获的配置步骤:

1 ))开启 TIM2 时钟,配置 PA0 为下拉输入。
要使用 TIM2,我们必须先开启 TIM2 的时钟(通过 APB1ENR 设置)。这里我们还要配置 PA0为下拉输入,因为我们要捕获 TIM2_CH1 上面的高电平脉宽,而 TIM2_CH1 是连接在 PA0 上
面的。
2 ))设置 TIM2 的 的 ARR 和 和 PSC
在开启了 TIM2 的时钟之后,我们要设置 ARR 和 PSC 两个寄存器的值来设置输入捕获的自动重装载值和计数频率。
3 ))设置 TIM2 的 的 CCMR1
TIM2_CCMR1 寄存器控制着输入捕获 1 和 2 的模式,包括映射关系,滤波和分频等。这里我们需要设置通道 1 为输入模式,且 IC1 映射到 TI1(通道 1)上面,并且不使用滤波(提高响应速度)器。
4) ) 设置 TIM2 的 的 CCER ,开启输入捕获,并设置为上升沿捕获。

TIM2_CCER 寄存器是定时器的开关,并且可以设置输入捕获的边沿。只有 TIM2_CCER寄存器使能了输入捕获,我们的外部信号,才能被 TIM2 捕获到,否则一切白搭。同时要设置好捕获边沿,才能得到正确的结果。
5) ) 设 置 TIM2 的 的 DIER ,使能捕获和更新中断,并编写中断服务函数
因为我们要捕获的是高电平信号的脉宽,所以,第一次捕获是上升沿,第二次捕获时下降沿,必须在捕获上升沿之后,设置捕获边沿为下降沿,同时,如果脉宽比较长,那么定时器就会溢出,对溢出必须做处理,否则结果就不准了。这两件事,我们都在中断里面做,所以必须开启捕获中断和更新中断。
设置了中断必须编写中断函数,否则可能导致死机。我们需要在中断函数里面完成数据处理和捕获设置等关键操作,从而实现高电平脉宽统计。
6 )设置 TIM2 的 的 CR1 ,使能定时器
最后,必须打开定时器的计数器开关,通过设置 TIM2_CR1 的最低位为 1,启动 TIM2 的计数器,开始输入捕获。
通过以上 6 步设置,定时器 2 的通道 1 就可以开始输入捕获了,同时因为还用到了串口输出结果,所以还需要配置一下串口。

输入捕获的一般配置步骤:

初始化定时器和通道对应IO的时钟。
初始化IO口,模式为复用:GPIO_Init();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
设置引脚复用映射:
GPIO_PinAFConfig();
初始化定时器ARR,PSC
TIM_TimeBaseInit();
初始化输入捕获通道
TIM_ICInit();
如果要开启捕获中断,
TIM_ITConfig();
NVIC_Init();
使能定时器:TIM_Cmd();
编写中断服务函数:TIMx_IRQHandler();

代码如下:

void TIME2_CAP_Init(u16 arr,u16 psc)
{GPIO_InitTypeDef  GPIO_InitStructure; TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_ICInitTypeDef  TIM2_ICInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);	 //使能TIM5时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能PA端口时钟GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);	 //设置为浮空输入TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_Period=arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位TIM2_ICInitStructure.TIM_Channel=TIM_Channel_2;TIM2_ICInitStructure.TIM_ICFilter=0x03;TIM2_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;TIM2_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;TIM2_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;TIM_ICInit(TIM2,&TIM2_ICInitStructure);TIM_Cmd(TIM2,ENABLE ); 
}int main(void){	delay_init();	    //延时函数初始化	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);uart_init(115200);LED_Init();		  	//初始化与LED连接的硬件接口BEEP_Init();TIME3_Init(4999,7199);TIME3_PWM_Init(899,0);TIME2_Cap_Init(0XFFFF,72-1);	//以1Mhz的频率计数 KEY_Init();			 	while(1){delay_ms(10);TIM_SetCompare2(TIM3,TIM_GetCapture2(TIM3)+1);if(TIM_GetCapture2(TIM3)==300)TIM_SetCompare2(TIM3,0);	if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿{temp=TIM5CH1_CAPTURE_STA&0X3F;temp*=65536;//溢出时间总和temp+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间printf("HIGH:%d us\r\n",temp);//打印总的高点平时间TIM5CH1_CAPTURE_STA=0;//开启下一次捕获}

总结

以上就是我对定时器的理解,定时器的内容很多,很杂,很复杂,需要大家自己对一些寄存器进行深入的理解,最重要的是自己要上手写代码,复制粘贴是学习STM32的大忌,希望大家可以通过自己的刻苦努力,来实现自己能力的提升。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 【通俗易懂】restful风格详解

    restful风格一、什么是restful风格?二、传统方式操作资源三、使用restful操作资源四、restful风格规范一、什么是restful风格? restful 风格说白了就一句话:用不同的请求方式来对资源进行操作,使请求的 URL 简单、清爽。 可以通…...

    2024/4/6 7:01:27
  2. 蛇形矩阵

    题目描述蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。示例1输入: 5 输出: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11接口说明 原型: voi...

    2024/4/6 7:01:26
  3. python现在的用户量多吗

    python从何开始学啊,我基础比较差的!!!!.......

    2024/4/25 15:38:51
  4. 相关系数

    在处理数据关系,建立模型时,我们往往会先对于可能影响目标的特征进行筛选,因为并不是所有的特征都对于我们的目标存在很大的影响。 1.对于相关系数有如下的理解: 如果有两个变量:X、Y,最终计算出的相关系数…...

    2024/5/6 9:20:28
  5. Python Numpy鸢尾花实训,数据处理

    Python Numpy鸢尾花实训,数据处理 本文所用数据下载地址——>点这里下载 本实训读取iris数据集中鸢尾花的萼片、花瓣长度数据,并对其进行排序,去重,并求出和、累计和、均值、标准差、方差、最小值、最大值。 1、导入模块 i…...

    2024/4/24 23:34:25
  6. 从基础知识学起

    想要技术做的好,就还是要从计算机基础知识学起,不要怕慢,下定决心的话,就算一次只学习一点也没关系。 然后把学到的知识总结,一点一点的写成博客。...

    2024/4/23 10:25:23
  7. 委托示例

    委托示例–学习刘老师视频 1:单播委托(同步调用) 运行结果: 2:多播委托(同步调用) 运行结果和单播委托相同 3:直接同步调用 运行结果: 4:间接同步调用&…...

    2024/4/21 22:57:31
  8. 【设计模式-工厂相关模式】

    工厂相关模式有两种,分别是: (1)工厂方法模式 (2)抽象工厂模式 接下来分别说下这两种工厂模式: 一、工厂方法模式 (1)定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法…...

    2024/4/6 8:14:08
  9. 点云配准论文

    点云配准,求解两个(具有overlap的)点云P, Q之间的变换(旋转矩阵和平移向量),使得点云P, Q的坐标处于同一坐标系下。点云配准在无人驾驶、三维重建等领域具有广泛的应用。 本文整理了点云配准相关的论文,既包括基于深度学习的点云配准算法&am…...

    2024/4/28 15:57:09
  10. Postman之Runner与Data数据文件处理

    Postman中管理和运行请求,都是以Collection为基础单位的,Collection是一组请求,可以在对应的环境下作为一系列请求一起运行,要想运行测试集合Collection,有如下三种运行方式: Runner运行测试集CollectionM…...

    2024/4/6 8:14:06
  11. UE4安卓打包报错解决办法整理

    UE4安卓打包报错解决办法整理 个人博客,整理自己遇到得一些问题 错误一 LogHttp: Warning: 000001D220D59600: request failed, libcurl error: 6 (Couldn’t resolve host name) 解决办法:...

    2024/4/6 8:14:06
  12. 高级程序员应该理解的Java NIO设计理念和模型

    前言 前面我简单说了一下Java I/O的内容,还是有很多小伙伴反应有些内容还是理解的不是很清晰,特别是关于Java IO的流以及NIO中的缓冲区,通道和选择器等,它们到底是怎样的关系。 在这篇文章中我就对Java的这两个版本的输入输出支…...

    2024/4/6 8:14:04
  13. SuperSocket 基本配置

    https://www.cnblogs.com/liuslayer/p/8624320.html...

    2024/4/6 8:14:04
  14. Android 使用Resource资源转换HashMap

    使用XML定义地图&#xff0c;将其放入res / xml并解析到HashMap。 如果要保留键顺序解析到LinkedHashMap。 简单的实现如下&#xff1a; res/xml中的地图资源&#xff1a; <?xml version"1.0" encoding"utf-8"?> <map linked"true"…...

    2024/4/26 11:56:05
  15. 虚拟环境下运行-2

    第一步&#xff1a;安装ipykernel&#xff1a; 法一&#xff1a; 1.进入虚拟环境 Windows&#xff1a;在Anaconda Prompt, 运行 activate myenv macOS & Linux, 在Terminal, 运行 source activate myenv安装ipykernel&#xff1a;conda install ipykernel法二&#xff1a…...

    2024/4/6 8:14:01
  16. node知识点(二)

    一、module和module.export通常可以互换使用&#xff0c;但是遇到如下情景&#xff0c;只能用module.export&#xff1a; module.exports { name : "猪八戒", age : 18, sayName:function(){ console.log(name); } } 具体为改变量和改属性的关系&#xff0c;参考…...

    2024/5/4 20:58:21
  17. fig, ax = plt.subplots(figsize = (a, b))解析

    在matplotlib一般使用plt.figure来设置窗口尺寸。 plt.figure(figsize(a, b)) 1 其中figsize用来设置图形的大小&#xff0c;a为图形的宽&#xff0c; b为图形的高&#xff0c;单位为英寸。 但是如果使用plt.subplots&#xff0c;就不一样了。 fig, ax plt.subplots(figsiz…...

    2024/5/2 16:59:00
  18. P2767 树的数量 DP | 组合数学

    题面&#xff1a; 给定n,mn,mn,m求nnn个节点的mmm叉树的形态有多少种 范围&性质&#xff1a;1≤n,m≤1271\le n,m\le 1271≤n,m≤127 分析&#xff1a; DP做法 当mmm等于2时就是卡特兰数&#xff0c;详情见卡特兰数定义和递推式 那我们考虑像Catlan数一样枚举每个儿子…...

    2024/4/6 8:13:59
  19. 负进制数与模负数

    模负数 求 a % p&#xff0c;以 a56236a \pm 56236a56236&#xff0c;p371p \pm 371p371 为例&#xff0c; a 56236a -56236p 371c: 215; python3: 215c: -215; python3: 156p -371c: 215; python3: -156c: -215; python3: -215十进制转k进制(k < 0) 1017. 负二进制…...

    2024/4/26 18:20:21
  20. 12-01-小程序参考内容

    微信小程序账号与工具 在线文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/ 小程序开发者账号注册 微信公众平台&#xff1a;https://mp.weixin.qq.com/ 小程序开发者账号注册&#xff1a;https://mp.weixin.qq.com/wxopen/waregister?acti…...

    2024/4/17 7:24:00

最新文章

  1. PostgreSQL自带的命令行工具10- pg_basebackup

    PostgreSQL自带的命令行工具10- pg_basebackupbash 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;5777pg_baseba…...

    2024/5/6 18:33:48
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/6 9:38:23
  3. Go语言中如何实现继承

    完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go语言中没有传统意义上的类和继承的概念&#xff0c;但可以通过嵌入类型&#xff08;embedded types&#xff09;来实现类似的功能。嵌入类型允许一个结构…...

    2024/5/5 8:37:47
  4. node.js常用指令

    1、node&#xff1a;启动 Node.js REPL&#xff08;交互式解释器&#xff09;。 node 2、node [文件名]&#xff1a;执行指定的 JavaScript 文件。 node app.js 3、npm init&#xff1a;初始化一个新的 Node.js 项目&#xff0c;生成 package.json 文件。 此命令会创建一个…...

    2024/5/3 8:55:58
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/6 18:23:10
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/5 12:22:20
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/5 19:59:54
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/6 7:24:07
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/5 15:25:47
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/6 6:01:13
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/6 7:24:06
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/6 1:08:53
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/5 18:50:00
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/6 0:27:44
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/6 7:24:04
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/6 7:24:04
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/5 13:14:22
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/6 7:24:03
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/5 17:03:52
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/5 21:10:50
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/6 7:24:02
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/6 7:24:01
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/5 17:03:21
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/6 16:50:57
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57