STM32单片机应用与全案例实践(第2版)课件 第7章 TIMER与PWM及其应用_第1页
STM32单片机应用与全案例实践(第2版)课件 第7章 TIMER与PWM及其应用_第2页
STM32单片机应用与全案例实践(第2版)课件 第7章 TIMER与PWM及其应用_第3页
STM32单片机应用与全案例实践(第2版)课件 第7章 TIMER与PWM及其应用_第4页
STM32单片机应用与全案例实践(第2版)课件 第7章 TIMER与PWM及其应用_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章TIMER与PWM及其应用定时器的工作原理及其基本应用定时器的计数功能PWM定时器配置重点——定时器的工作原理难点——定时器的工作模式、特性设置、参数计算TIMER与PWM及其应用1主要接口函数定时器应用实例关于STM32的定时器的概况STM32最多达11个定时器,其中2个为高级控制定时器,4个为普通定时器和2个为基本定时器,2个看门狗定时器和1个SysTick滴答定时器高级控制定时器——TIM1、TIM8通用定时器——TIM2~TIM5,超大容量产品还有通用定时器TIM9~TIM14基本定时器——TIM6和TIM7STM32定时器的分类高级控制定时器——功能最强,可以实现所有其他定时器的所有功能,在APB2总线上3对互补PWM,可用于电机控制通用定时器——功能次之。在APB1总线上基本定时器——功能最简单。在APB1总线上STM32定时器的特性重点学习TIMER与PWM及其应用2定时器的工作原理及其基本应用通用定时器的核心是一个通过可编程预分频器驱动的16位自动装载计数器。通俗地讲,就是按一定的频率计数的计数器。计数到预设值,则置位相关标志、输出信号切换、触发中断,同时,自动重装预设值。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)STM32通用定时器的原理STM32通用定时器的时钟高级控制定时器——由APB2输出产生通用定时器、基本定时器——由APB1输出产生定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器。通用定时器的计数用时钟是来自于输入为APB1的一个倍频器。为什么要注这样?TIMER与PWM及其应用3定时器的工作原理及其基本应用STM32通用定时器的时钟当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍然能够得到较高的时钟频率(计数频率)举例说明——假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值:当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。TIMER与PWM及其应用4定时器的工作原理及其基本应用周期的设置是关键。定时器的本质是计数器,即对一定周期(频率)的脉冲进行计数,计数方式可为向上计数、也可向下计数,计数到了则溢出使输出信号翻转。周期设置的重点有两个方面:——是计数用的脉冲的频率(周期)设定——是计数值的设定。对于STM32的固件库而言,即为设置TIMx的PSC(预分频值)和ARR(自动重装溢出值),前者就是对定时器所用的时钟进行分频,后者就是设置计数目标。STM32通用定时器的基本应用——定时周期设置①

TIM_TimeBaseStructure.TIM_Prescaler=72-1;//必须减1,因为在内部计算时自动加1②

TIM_TimeBaseStructure.TIM_Period=2000-1;//自动重装溢出值如果定时器所用时钟为72MHz,预分频71+1次,得到TIM计数时钟频率为1MHz。计数长度(自动重装溢出值)为1999+1=2000,因此,得定时周期=2ms(对应频率1M/2000=500Hz的倒数

)Caution!TIMER与PWM及其应用5定时器的工作原理及其基本应用以通用定时器TIM2为例,基本的配置要点如下:——选择时钟来源——选择计数器模式——程序步骤PSC(预分频值)和ARR(自动重装溢出值),前者就是对定时器所用的时钟进行分频,后者就是设置计数目标。STM32通用定时器的基本应用——配置要点——内部时钟(CK_INT)——外部时钟模式1:外部输入脚(TIx)——外部时钟模式2:外部触发输入(ETR)——内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,例如,可以配置定时器TIM1作为另一个定时器TIM2的预分频器。使用系统默认时钟,即72M,则APB2为72M、APB1为36M(即2分频)定时器TIM2的使用倍频特性,得到计数频率:72MTIMER与PWM及其应用6定时器的工作原理及其基本应用以通用定时器TIM2为例,基本的配置要点如下:——选择时钟来源——选择计数器模式——程序步骤PSC(预分频值)和ARR(自动重装溢出值),前者就是对定时器所用的时钟进行分频,后者就是设置计数目标。STM32通用定时器的基本应用——配置要点TIM2-TIM5可以有向上计数、向下计数、向上向下双向计数三种计数模式——向上计数模式中,计数器从0计数到自动重装溢出值(TIMx_ARR计数器内容),然后重新从0开始计数并且产生一个计数器溢出事件——向下计数模式中,计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入值重新开始,并产生一个计数器向下溢出事件——中央对齐模式(向上/向下计数),是计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数TIMER与PWM及其应用7定时器的工作原理及其基本应用以通用定时器TIM2为例,基本的配置要点如下:——选择时钟来源——选择计数器模式——程序步骤PSC(预分频值)和ARR(自动重装溢出值),前者就是对定时器所用的时钟进行分频,后者就是设置计数目标。STM32通用定时器的基本应用——配置要点第一步:配置系统时钟;

所有涉及的外设的时钟第二步:配置NVIC;

中断及其使能第三步:配置GPIO;

所用的GPIO(根据需要,这一步不是必须的)第四步:配置TIMER。

所用的定时器配置

TIMER与PWM及其应用8定时器的计数器功能及其应用把STM32的定时器内部结构简化为下图——对内部时钟计数是典型的定时器对外部脉冲计数可以理解其为定时器,也可以视其为计数器从图中可以看出——可以对ETR引脚输入脉冲计数——也可以对CHx引脚输入的脉冲计数当然两者特性和使用要求不一样STM32通用定时器的计数器功能——原理这些特性及其设置,请你认真查阅ST官方手册或其他资料,消化它!TIMER与PWM及其应用9定时器的计数器功能及其应用TIM2作脉冲计数器,脉冲信号连接到PA0引脚,就是TIM2的时钟输入引脚。以下是STM32F10xVxT6中的TIM2的外部时钟输入端:T2_CH1_ETRSTM32通用定时器的计数器功能——举例说明主要步骤——1)配置相应的GPIO引脚2)配置TIM2定时器的有关特性和参数3)使能定时器(如果采用中断法,则要使能定时器中断,设置优先级,自定义中断函数4)采用中断法或查询法读取计数值TIMER与PWM及其应用10STM32定时器的PWM及其应用11.什么是“PWM”脉宽调制(PWM,PulseWidthModulation)是脉冲宽度调制的简称,被广泛应用在从测量、通信到功率控制与变换的许多领域中。随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等。它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,通过改变脉冲的宽度或占空比可以调压,如果采用适当控制方法即可使电压与频率协调变化,从而实现通过调整PWM的周期、PWM的占空比而达到改变电压、或电流的目的。占空比(DutyCycle)的含义:在一串理想的脉冲序列(如方波)中,正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。2.基本应用PWM的应用十分广泛。——直流电机调速——LED发光二极管亮度调节——变频调速STM32定时器的PWM实现——一般原理各自的原理又是什么?TIMER与PWM及其应用11STM32定时器的PWM及其应用11.STM32的PWM原理STM32单片机的定时器中的计数单元对一定频率的时钟进行计数,当计数值达到某个设定值时,某一对应的引脚的输出状态进行翻转(例如:由高电平翻转为低电平),然后直到计数单元溢出,输出状态再次翻转回到原始状态。周而复始显然,在计数频率一定的情况下,改变计数值,就能改变脉冲宽度,即PWM其实PWM就是定时器的一个比较功能而已2.两个相关概念——输出通道:就是PWM波形的输出引脚,STM32单片机的每个定时器通常都有对应的4个输出通道,即:TIMx_CHX——互补输出:互补输出是针对高端与低端开关提供交替驱动所必需的信号。例如,无刷直流电机(BrushlessDirectCurrentMotor,BLDCM)马达每转一圈,每个相位的驱动电流方向便会改变两次。这必须使连接在该相位端的驱动电压改变方向。STM32定时器的PWM实现——STM32定时器的PWMTIMER与PWM及其应用12STM32定时器的PWM及其应用13.STM32的PWM的三个基本步骤——配置输出通道:选择使用某个通道或某几个通道作为PWM功能的定时器的输出通道,那么对应的引脚(其实就是GPIO)必须进行时钟和引脚输出方式配置PWM输出口要配置为复用推挽输出GPIO_Mode_AF_PP(也许还会使用重映射)还记得它吗?——配置定时器:设置TIMx定时器的相关寄存器。主要是设置的ARR和PSC。这部分配置与前述内容没有本质差异。这一步设置PWM波形的周期(频率)——配置PWM模式:设置相关引脚为PWM模式(默认是冻结的)。通过函数TIM_OC1Init()~TIM_OC4Init(),不同通道的设置函数是不同的。STM32定时器的PWM实现——STM32定时器的PWMTIMER与PWM及其应用13定时器配置以高级定时器TIM1为例进行分析。单击TIM1,右侧显示可配置信息,如图7.5所示。定时器模式TIMER与PWM及其应用14在Mode选项下,从上往下配置的内容分别为:SlaveMode(从模式)TriggerSource(触发源)ClockSource(时钟源)Channelx(通道x)CombinedChannels(结合通道)定时器配置可以通过设置内部时钟等方式启用定时器。启用后,下方将弹出三个可设置选项卡,分别是UserConstants、NVICSettings和DMASettings,如图7.6所示。定时器参数TIMER与PWM及其应用15在Configuration区域的UserConstants下,ParameterSettings即为定时器参数设置,从上往下为计数设置(CounterSettings)和触发输出参数设置[TriggerOutput(TRGO)Parameters]。用预分频(PSC)和计数周期(ARR)计算溢出时间的公式如下:

定时器配置单击图7.6中的NVICSettings选项卡,下方显示可以启用的定时器中断,如图7.7所示。定时器中断TIMER与PWM及其应用16由图7.7可知,定时器中断有四种触发方式,分别是溢出中断、更新中断、触发与传输中断、捕获比较中断,可根据需要选用。主要接口函数定时器的HAL库接口函数定义在:stm32f1xx_hal_tim.c和stm32f1xx_hal_tim_ex.c两个源文件中。定时器库函数声明与相关的结构体定义则在:stm32f1xx_hal_tim.h和stm32f1xx_hal_tim_ex.h两个头文件中。本节只对主要函数进行解析。TIMER与PWM及其应用17主要接口函数1.非中断方式定时器启停TIMER与PWM及其应用18(1)普通方式启动。函数原型:HAL_StatusTypeDefHAL_TIM_Base_Start(TIM_HandleTypeDef*htim)功能描述:以普通方式启动指定定时器。(2)停止定时器。函数原型:HAL_StatusTypeDefHAL_TIM_Base_Stop(TIM_HandleTypeDef*htim)功能描述:停止定时器。主要接口函数2.中断方式定时器启停TIMER与PWM及其应用19(1)中断方式启动。函数原型:HAL_StatusTypeDefHAL_TIM_Base_Start_IT(TIM_HandleTypeDef*htim)功能描述:以中断方式启动定时器。(2)停止定时器中断。函数原型:HAL_StatusTypeDefHAL_TIM_Base_Stop_IT(TIM_HandleTypeDef*htim)主要接口函数1.比较输出的启动、关闭比较输出TIMER与PWM及其应用20(1)启动定时器的比较输出。函数原型:HAL_StatusTypeDefHAL_TIM_OC_Start(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:启动定时器的指定通道的比较输出。(2)关闭定时器的比较输出。函数原型:HAL_StatusTypeDefHAL_TIM_OC_Stop(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:关闭定时器的指定通道的比较输出。主要接口函数2.比较输出中断的启动、关闭比较输出TIMER与PWM及其应用21(1)启动定时器的比较输出中断。函数原型:HAL_StatusTypeDefHAL_TIM_OC_Start_IT(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:启动定时器的指定通道的比较输出中断。(2)关闭定时器的比较输出中断。函数原型:HAL_StatusTypeDefHAL_TIM_OC_Stop_IT(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:关闭定时器的指定通道的比较输出中断。主要接口函数3.比较输出DMA的启动、关闭比较输出TIMER与PWM及其应用22(1)启动定时器的比较输出DMA。函数原型:HAL_StatusTypeDefHAL_TIM_OC_Start_DMA(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:启动定时器的指定通道的比较输出DMA。(2)关闭定时器的比较输出DMA。函数原型:HAL_StatusTypeDefHAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:关闭定时器的指定通道的比较输出DMA。主要接口函数1.非中断方式的PWM输出PWM输出TIMER与PWM及其应用23(1)启动PWM输出。函数原型:HAL_StatusTypeDefHAL_TIM_PWM_Start(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:启动指定通道的PWM输出。(2)停止PWM输出。函数原型:HAL_StatusTypeDefHAL_TIM_PWM_Stop(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:停止指定通道的PWM输出。主要接口函数1.非中断方式的输入捕获输入捕获TIMER与PWM及其应用24(1)启动输入捕获。函数原型:HAL_StatusTypeDefHAL_TIM_IC_Start(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:启动指定通道的输入捕获。(2)停止输入捕获。函数原型:HAL_StatusTypeDefHAL_TIM_IC_Stop(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:停止指定通道的输入捕获。主要接口函数2.中断方式的输入捕获输入捕获TIMER与PWM及其应用25(1)启动中断方式的输入捕获。函数原型:HAL_StatusTypeDefHAL_TIM_IC_Start_IT(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:启动指定通道的中断方式的输入捕获。(2)停止中断方式的输入捕获。函数原型:HAL_StatusTypeDefHAL_TIM_IC_Stop_IT(TIM_HandleTypeDef*htim,uint32_tChannel)功能描述:停止指定通道的中断方式的输入捕获。定时器应用实例本实例使用定时器中断控制LED亮灭,每隔1s变换一次状态。选用定时器TIM1。定时器控制LEDTIMER与PWM及其应用26(1)新建STM32CubeIDE工程,选择MCU。(2)时钟与引脚功能配置:TIM1挂载在APB2上,设置APB2的频率为8MHz。配置RCC、GPIO引脚,具体的配置过程参见本书GPIO相关章节,本实例使用LED0,对应的物理引脚为PB5。(3)配置定时器:按照图7.8所示的①②③顺序,依次单击TIM1,设置时钟源(ClockSource)为内部时钟,以使能TIM1。(4)按照间隔1s的要求,更改计数器设置(CounterSettings)的预分频器PSC和计数周期ARR。注意无须设置自动重载。定时周期计算如下:T=(799+1)×(9999+1)/8MHz=1s

(5)设置定时器中断。单击NVICSettings选项卡,勾选TIM1updateinterrupt复选框,如图7.9所示。(6)代码编写。

在main.c文件中的/*USERCODEBEGIN2*/与/*USERCODEEND2*/之间添加以下代码,启动定时器中断。HAL_TIM_Base_Start_IT(&htim1);//启动定时器中断

在中断文件stm32f1xx_it.c的/*USERCODEBEGINTIM1_UP_IRQn1*/与/*USERCODEENDTIM1_UP_IRQn1*/之间添加控制LED状态翻转的函数。HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转LED0状态定时器应用实例呼吸灯是PWM最简单的应用。利用PWM输出,有节奏调节通过LED的电流大小,实现它的亮度变化模拟人的呼吸状态,即为呼吸灯。本实例中,占空比从0增加到1000,再降至0。LED的亮度从低到高再变低,如此反复循环。PWM呼吸灯TIMER与PWM及其应用27(1)新建STM32CubeIDE工程,选择MCU。(2)时钟与引脚功能配置:由原理图得知,LED0的引脚对应TIM3的通道2。TIM3挂载在APB1上,设置APB2的频率为72MHz。(3)配置定时器:按照图7.10所示的①②③顺序,依次单击TIM3,设置时钟源(ClockSource)为内部时钟,以使能TIM3。由于默认情况下通道2使用的引脚不是PB5,因此需要将PB5引脚分配给TIM3的通道2(TIM3_CH2),方法如下:先单击PB5,选择TIM3_CH2,此时高亮颜色为黄色,表示尚未连接定时器。通道2设置为PWMGenerationCH2,右侧高亮颜色变绿色,表示连接成功。(4)设定PWM周期:本实例为1kHz,因此图7.10中③所示的预分频器PSC和计数周期ARR更改了,由定时时间计算得到周期:T=(71+1)×(999+1)/72MHz=1s其他参数保留默认设置。若希望初始条件下占空比不为0,可对以下代码中PWMVal=0进行调整,占空比=Pulse/CounterPeriod。(5)代码编写。在main.c文件中的/*USERCODEBEGIN2*/与/*USERCODEEND2*/之间添加以下PWM输出的启动代码。uint16_tPWMVal=0; //PWM占空比HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2); //启动PWM在/*USERCODEBEGIN3*/与/*USERCODEEND3*/之间添加以下控制占空比变更的代码。定时器应用实例呼吸灯是PWM最简单的应用。利用PWM输出,有节奏调节通过LED的电流大小,实现它的亮度变化模拟人的呼吸状态,即为呼吸灯。本实例中,占空比从0增加到1000,再降至0。LED的亮度从低到高再变低,如此反复循环。PWM呼吸灯TIMER与PWM及其应用28while(PWMVal<1000){PWMVal++;HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,PWMVal);//修改占空比

HAL_Delay(1);}while(PWMVal){PWMVal--;HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,PWMVal);//修改占空比

HAL_Delay(1);}HAL_Delay(200);定时器应用实例输入捕获模式可用来测量脉冲宽度或频率。STM32的定时器中,除基本定时器TIM6、TIM7外,其他的定时器都有输入捕获功能。输入捕获测量脉冲宽度与频率的原理可结合图7.11加以说明,主要分为6步。输入捕获TIMER与PWM及其应用29第一步:设置输入捕获为上升沿捕获,如图7.11中①所示。第二步:记录发生上升沿时TIMx_CNT(计数器)的值或清除计数器值,如图7.11中②所示。第三步:设置输入捕获为下降沿捕获,如图7.11中③所示。第四步:记录发生下降沿时的计数器值,计算高电平计数值,如图7.11中④所示。第五步:设置输入捕获为上升沿捕获,如图7.11中⑤所示。第六步:记录发生上升沿时的计数器值,计算低电平计数值,如图7.11中⑥所示。在第4步和第6步得到高、低电平的计数值的基础上,即可计算得到脉冲宽度或频率。本实例通过TIM3输出PWM,通过TIM2对该PWM波形进行捕获,然后计算PWM的占空比。定时器应用实例输入捕获模式可用来测量脉冲宽度或频率。STM32的定时器中,除基本定时器TIM6、TIM7外,其他的定时器都有输入捕获功能。输入捕获测量脉冲宽度与频率的原理可结合图7.11加以说明,主要分为6步。输入捕获TIMER与PWM及其应用30(1)新建STM32CubeIDE工程,选择MCU。(2)时钟与引脚功能配置,参见7.5.1节。(3)配置PWM输出。按图7.12所示,选择TIM3,设置时钟源为内部时钟,用通道1输出PWM,物理引脚为PA6。设置PWM频率为10Hz,初始占空比为40%,相应参数如图7.12所示。(4)设置输入捕获。如图7.13所示,选择TIM2,设置时钟源为内部时钟,使用通道4作为输入捕获通道,物理引脚为PA3。(5)代码编写。在/*USERCODEBEGINPV*/与/*USERCODEENDPV*/之间添加以下定义变量的代码。uint32_tCap_Buf[2]; //用于存放下降沿与第二个上升沿时间uint8_tCap_End=0; //一个周期结束标志位floatduty=0; //占空比uint8_tover_time=0; //溢出次数定时器应用实例输入捕获模式可用来测量脉冲宽度或频率。STM32的定时器中,除基本定时器TIM6、TIM7外,其他的定时器都有输入捕获功能。输入捕获测量脉冲宽度与频率的原理可结合图7.11加以说明,主要分为6步。输入捕获TIMER与PWM及其应用31在/*USERCODEBEGIN2*/与/*USERCODEEND2*/之间添加以下启动定时器代码。HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); //启动PWMHAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_4); //启动输入捕获定时器应用实例输入捕获模式可用来测量脉冲宽度或频率。STM32的定时器中,除基本定时器TIM6、TIM7外,其他的定时器都有输入捕获功能。输入捕获测量脉冲宽度与频率的原理可结合图7.11加以说明,主要分为6步。输入捕获TIMER与PWM及其应用32在/*USERCODEBEGIN3*/与/*USERCODEEND3*/之间添加以下占空比计算代码。if(Cap_End==1){//设置为上升沿捕获__HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CHANNEL_4,TIM_ICPOLARITY_RISING);HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_4); //启动输入捕获

duty=(float)Cap_Buf[0]/(over_time*65535+Cap_Buf[1])*100; //占空比计算

Cap_End=0;over_time=0;}if(TIM2->CNT==0xFFFF)over_time++; //记录溢出次数定时器应用实例输入捕获模式可用来测量脉冲宽度或频率。STM32的定时器中,除基本定时器TIM6、TIM7外,其他的定时器都有输入捕获功能。输入捕获测量脉冲宽度与频率的原理可结合图7.11加以说明,主要分为6步。输入捕获TIMER与PWM及其应用33在/*USERCODEBEGINTIM2_IRQn1*/和/*USERCODEENDTIM2_IRQn1*/之间添加以下中断代码。if(Cap_End==0)switch(Cap_Cnt){case0:HAL_TIM_SET_COUNTER(&htim2,0); //清除计数器的计数

//设置为下降沿捕获

HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CHANNEL_4,TIM_ICPOLARITY_FALLING);Cap_Cnt=1;break;case1://获取当前的捕获时间

Cap_Buf[0]=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_4);HAL_TIM_SET_COUNTER(&htim2,0); //清除计数器的计数

//设置为上升沿捕获

HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CHANNEL_4,TIM_ICPOLARITY_RISING);Cap_Cnt=2;break;定时器应用实例输入捕获模式可用来测量脉冲宽度或频率。STM32的定时器中,除基本定时器TIM6、TIM7外,其他的定时器都有输入捕获功能。输入捕获测量脉冲宽度与频率的原理可结合图7.11加以说明,主要分为6步。输入捕获TIMER与PWM及其应用34case2://获取当前的捕获时间

Cap_Buf[1]=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_4);HAL_TIM_IC_Stop_IT(&htim2,TIM_CHANNEL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论