定时器学习总结

本文详细介绍了单片机中的定时器功能,包括TIM1、TIM8等高级定时器,TIM2、TIM3、TIM4、TIM5等通用定时器和基本定时器的特性。重点讨论了计数器、预分频器、自动重装寄存器的应用,以及PWM、输入捕获和输出比较的原理,还给出了配置定时器的代码示例和频率测量方法。
摘要由CSDN通过智能技术生成

定时器是单片机中重要的功能,有着定时器可以控制很多,例如常见的延时信号,可以更加精准的进行延时,还可以控制PWM发送脉冲信号,通过同时定时器的时长调整发送占空比达到不同的频率,波特率的发送也需要定时器来进行时钟,所以基本上在使用单片机上面定时器是必不可少的重要功能,因此,为了防止忘记当前定时器功能的使用和配置,写下当前学习总结。

单片机定时器TIM定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断,,

16位计数器,预分频器,自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大的58.62S的定时,不仅具备基本的定时中断功能,而且还包含内外时钟源选择,输入捕获、输出比较、编码器接口、主从触发模式等多种功能,

可以根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型

如图所示上述的定时器功能就是当前的编号,高级定时器用的TIM1、TIM8总线是APB2,有这通用定时器的全部功能。通用定时器是TIM2、TIM3、TIM4、TIM5 ,        总线是APB1有这基本定时器的全部功能,还有这内外时钟源选择等。在STM32F103C8T6中有定时器TIM1、TIM2、TIM3、TIM4。

定时器时钟等于=时钟\预分配器值+1\自动重装器

实际分配系数=预分频器的值+1,最大值就是65535+1

自动重装寄存器=16位65535

这张图表示位可以定时器的触发方式,从第一的内部时钟触发和外部时钟,以及其他定时器,TIX捕获通道,表示当前定时器可以使用的时钟源

然后就通过不同的时钟模式,进入时基单元,时钟源先是进入PSC预分频器,然后进入计数器这时进行16位分频,然后ARR自动重装,接着就是中断输出控制

其中还有影子寄存器用于缓冲,让值得变化和事件可以同步发生,防止在运行途中更改发生错误

计数器计数频率:CK_CNT=CK_PSC/(PSC+1),ck_psc表示时钟源的例如72mhz 

计数器溢出频率:CK_CNT_OV=CK_CNT/(ARR+1)=CK_PSC/(PSC+1)/(ARR+1)

配置定时器代码

主要讲解就是库函数的代码

第一就是TIM_DeInit()恢复初始化,

第二TIM_TimBaseInit()时基单元初始化

TIM_TimBaseStructInit()结构体变量

TIM_Cmd()使能或者失能定时器

TIM_ITConfig()使能中断输出信号

void TIM_TIxExternalClockConfig(选择其他定时器时钟

void TIM_InternalClockConfig(TIM_TypeDef* TIMx);选择内部时钟

void TIM_ITRxExternalClockConfig选择TIX捕获通道时钟

void TIM_ETRClockMode2Config选择ETR外部时钟输入

void TIM_ETRConfig()配置外部时钟的

void TIM_PrescalerConfig用来写预分配值函数

void TIM_CounterModeConfig选择新的预分频值

void TIM_ARRPreloadConfig自动重装器预装功能

TIM_SetCounter 给计数器写入一个值

uint16_t TIM_GetCounter 获取当前计数器的值

输出比较

输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或者翻转的操作,用于输出一定的频率和占空比的PWM波形

PWM脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,

PWM参数:频率=1/ts  占空比=ton/ts 分辨率=占空比变化步距

 捕获比较通道的输出部分,当CNT>CCR时或者CNT=CCR就会给输出模式控制器一个信号,接着输出模式控制器就会输出oc1ref信号,这个REF信号就可以前往主模式控制器或者下面的的路,有一个双路选择,当选择0,信号就会往上走,信号电平不翻转,选择1就会通过一个非门去反,就会翻转信号。

上述表很清晰的讲解了当前输出比较的模式,分别为8种模式,一般常用PWM模式,

接着就是PWM的基本结构,这个结构从来是的时基单元那就从预分频器到计数器自动重装器,接着就是PWM的输出比较单元,通过选择PWM模式来确定当前输出频率。表示为当CTN<CCR时REF为高电平,当CNT大于或等于CCR时就置0,输出波形就是低电平,所以就可以通过调整CNT来改变当前输出波形。

上述的波形图可以表示为当前的运行原理

黄色的线表示为ARR自动重装,蓝色的线表示CNT计数器,红色的线表示CCR捕获,下方的矩形图就是REF输出的波形,当CNT小于CCR就置高电平,当CNT大于或等于CCR时就置低电平。

所以当设置的CCR数值小一点,输出的占空比也会小,输出大占空比也会大

因此可以的出当前的PWM数值

PWM频率:CK_PSC/(PSC+1)/(ARR+1)这里就表示当前定时器的是时钟频率

PWM占空比:CRR/(ARR+1)

PWM分辨率:1/(ARR+1)

输入捕获模式

输入捕获模式下,当通道输入引脚出现指定电平跳动时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数

每一个高级定时器和通用定时器都拥有4个输入捕获通道

可配置PWMI模式,同时测量频率和占空比

可配合主从触发模式,实现硬件全自动测量

上面的输出比较不同,这里是输入捕获,输出比较是比较当前定时器CCR和CNT之间的数值然后根据设置的数值输出对应的波形,而输入捕获则是接受到输入信号,执行CNT锁存到CCR的动作。用于测量PWM波形的频率、占空比

测量频率的方法

测频法:在闸门时间T内,对上升沿计次,得到N,则频率FX=N/T,测量高频

测周法:两个上升沿内,以标准频率FC计次,得到N,则频率FX=fc/N,测量低频

中界频率:测频法与测周法误差相等的频率点,FM=根号FC/T,测量中频

从模式就是用于清零当前计数器的CNT

上图原理就是输入到进来的波形,通过边沿检测到上升沿触发,在此期间定时器CNT是一直计数的就是FC时钟频率,当TI1FP1触发上升沿,就会吧CNT当前的计数值转运到CCR1中,然后触发从模式CNT清零。

简单理解就是上图的正弦波就是输入信号,当信号出入进来前CNT是已经开始计数,当边沿检测到上升沿就会触发CCR1将CNT的计数值转运,接着从模式就会将CNT清零,继续开始计数,依次类推。测周法最大就是65535

相比上面多了一个CCR,例如上升沿是CCR1捕获清零,而CCR2则是捕获当前的CNT不会触发清零就会捕获当前的下降沿,因此上升沿的时间频率就知道,通过CCR2/CCR1就可以得出当前的频率的占空比。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值