文档详情

微机原理及单片机应用技术-定时器原理及应用

第***
实名认证
店铺
PPT
861KB
约29页
文档ID:616598607
微机原理及单片机应用技术-定时器原理及应用_第1页
1/29

单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,普中,STM32,开发板带您进入,ARM,世界,定时器原理及应用,本章主要内容,10.1,定时器概述,10.2,基本定时器,10.3,通用定时器,10.4,高级定时器,10.5 STM32F10 x,定时器相关库函数,10.6 STM32F103,定时器开发实例,10.1,定时器的概述,本章讲述微控制器另一个基本的片上外设,-,定时器定时器是微控制器必备的片上外设微控制器中的定时器实际上是一个计数器,可以对内部脉冲,/,外部输入进行计数,不仅具有基本的计数,/,延时功能,还具有输入捕获、输出比较和,PWM,输出等高级功能定时器的资源十分丰富,包括高级控制定时器、通用定时器和基本定时器在低容量和中容量的,STM32F103XX,系列产品中,以及互连型产品,STM32F105XX,系列和,STM32F107XX,系列中,只有一个高级控制定时器,TIM1,而在高容量和超大容量的,STM32F103XX,系列产品中,有两个高级控制定时器,TIM1,和,TIM8,在所有的,STM32F10XXX,系列产品中,都有通用定时器,TIM2TIM5,本书以,STM32F103,系列为例,在该系列产品中最多有,11,个定时器,其中,2,个高级控制定时器,,4,个通用定时器,,2,个基本定时器,,2,个看门狗定时器,以及,1,个系统嘀嗒定时器。

本章主要讨论前,8,个定时器在嵌入式系统中,使用定时器可以完成以下功能:,在多任务的分时系统中用作中断来实现任务的切换;,周期性执行某个任务,如每隔固定时间完成一次,AD,采集;,延时一定时间执行某个任务,如交通灯信号变化;,显示实时时间,如万年历;,产生不同频率的波形,如,MP3,播放器;,产生不同脉宽的波形,如驱动伺服电机;,测量脉冲的个数,如测量转速;,测量脉冲的宽度,如测量频率10.2,基本定时器,基本定时器,TIM6,和,TIM7,只具备最基本的定时功能,就是累加的时钟脉数超过预定值时,能触发中断或触发,DMA,请求由于在芯片内部与,DAC,外设相连,可通过触发输出驱动,DAC,,也可以作为其他通用定时器的时钟基准基本定时器框图见图,这两个基本定时器使用的时钟源都是,TIMxCLK,,时钟源经过,PSC,预分频器输入至脉冲计数器,TIMx_CNT,,基本定时器只能工作在向上计数模式,在重载寄存器,TIMx_ARR,中保存的是定时器的溢出值工作时,脉冲计数器,TIMx_CNT,由时钟触发进行计数,当,TIMx_CNT,的计数值,X,等于重载寄存器,TIMx_ARR,中保存的数值,N,时,产生溢出事件,可触发中断或,DMA,请求。

然后,TIMx_CNT,的值重新被置为,0,,重新向上计数10.3,通用定时器,相比之下,通用定时器,TIM2TIM5,就比基本定时器复杂得多了除了基本的定时,它主要用在测量输入脉冲的频率、脉冲宽与输出,PWM,脉冲的场合,还具有编码器的接口STM32F103,系列通用定时器的主要功能如下:,具有自动重装载功能的,16,位递增,/,递减计数器,其内部时钟,CK_CNT,的来源,TIMxCLT,来自,APB1,预分频器的输出具有,4,个独立的通道,每个通道都可以用于输入捕获、输出比较、,PWM,输入和输出以及单脉冲模式输出等在更新、触发、输入捕获以及输出比较事件时,可产生中断,/DMA,请求支持针对定位的增量编码器和霍尔传感器电路使用外部信号控制定时器和定时器互连的同步电路触发输入作为外部时钟或者按周期的电流管理通用定时器框图见,下,图硬件结构可分为三个部分:时钟源、时钟单元、捕获和比较通道10.3.1,时钟源的选择,定时器时钟可由下述时钟源提供1),内部时钟(,CK_INT,Internal clock,)2),外部时钟模式,1,:外部输入脚(,Tix,),包括外部比较捕获引脚,TI1F_ED,、,TI1FP1,和,TI2FP2,,计数器在选定引脚的上升沿或下降沿开始计数。

3),外部时钟模式,2,:外部触发输入(,External Trigger Input,,,ETR,),计数器在,ETR,引脚的上升沿或下降沿开始计数4),内部触发输入(,ITRx,,,x=0,1,2,3,),:,一个定时器作为另一个定时器的预分频器,如可以配置一个定时器,TIM1,作为另一个定时器,TIM2,的预分频器除内部时钟外,其他,3,种时钟源都通过,TRGI,(触发输入),如图,内部时钟源(,CK_INT,),如果选择内部时钟源的话则与基本定时器一样,也为,TIMxCLK,但要注意的是,所有定时器(包括基本、通用和高级)使用内部时钟时,定时器的时钟源都被称为,TIMxCLK,,但,TIMxCLK,的时钟来源并不是完全一样的,如图所示,定时器的时钟不是直接来自,APB1,或,APB2,,而是来自于输入为,APB1,或,APB2,的一个倍频器TIM27,也就是通用定时器,,TIMxCLK,的时钟来源是,APB1,预分频器的输出当,APB1,的分频系数为,1,时,则,TIM27,的,TIMxCLK,直接等于该,APB1,预分频器的输出,当,APB1,的预分频系数为其他数值(即预分频系数为,2,、,4,、,8,或,16,)时,这个倍频器起作用,,TIM27,的,TIMxCLK,则为,APB1,预分频器输出的,2,倍。

10.3.2,时基单元,STM32,的通用定时器的时基单元包含计数器(,TIMx_CNT,)、预分频器(,TIMx_PSC,)、和自动装置寄存器(,TIMx_ARR,)等,如图所示计数器、自动装载寄存器和预分频器可以由软件进行读,/,写操作,在计数器运行时仍可读,/,写CNT,计数器,U,UI,自动装载寄存器,PSC,预分频器,U,停止、清零或递增,/,减,CK_CNT,CK_PSC,+/-,从时钟源送来的时钟信号,首先经过预分频器的分频,降低频率后输出信号,CK_CNT,,送入计数器进行计数,预分频器的分频取值范围可以是,165536,之间的任意数值一个,72MHz,的输入信号经过分频后,可以产生最小接近,1100Hz,的信号计数器具有,16,位计数功能,它可以在时钟控制单元的控制下,进行递增计数、递减计数或中央对齐计数(即先增计数,达到自动重装载寄存器的数值后再递减计数)10.3.3,捕获,/,比较寄通道,通用定时器的基本计时功能与基本定时器的工作方式是一样的,同样把时钟源经过预分频器输出到脉冲计数器,TIMx_CNT,累加,溢出时就产生中断或,DMA,请求而通用定时器比基本定时器多出的强大功能,就是因为通用定时器多出了一种寄存器捕获,/,比较寄存器,TIMx_CCR(capture/compare register),。

它包括捕获输入部分(数字滤波、多路复用和预分频器)和比较输出部分(比较器和输出控制)当一个通道工作于捕获模式时,该通道的输出部分自动停止工作;同样,当一个通道工作于比较模式时,该通道的输入部分自动停止工作1,捕获通道,当一个通道工作于捕获模式时,输入信号从引脚经输入滤波、边沿检测和预分频电路后,控制捕获寄存器的操作当指定的输入边沿到来时,定时器将该时刻计数器的当前数值复制到捕获寄存器,并在中断使能时产生中断读出捕获寄存器的内容,就可以知道信号发生变化的准确时间2,比较通道,当一个通道工作于比较模式时,用户程序将比较数值写入比较寄存器,定时器会不停地将该寄存器的内容与计数器的内容进行比较,一旦比较条件成立,则产生相应的输出如果使能了中断,则产生中断;如果使能了引脚输出,则按照控制电路的设置产生输出波形这个通道最重要的应用就是输出,PWM,(,Pulse Width Modulation,)波形10.3.4,计数器模式,向上计数模式,在向上计数模式中,计数器从,0,计数到自动加载值(,TIMx_ARR,计数器的内容),然后重新从,0,开始计数,并且产生一个计数器溢出事件当,TIMx_ARR=0 x36,时,计数器向上计数模式如图,10.9,所示。

图,10.9,向上计数模式实例(,TIMx_ARR=0X36,),向下计数模式,在向下模式中,计数器从自动装入的值(,TIMx_ARR,计数器的值)开始向下计数到,0,,然后从自动装入的值重新开始计数,并且产生一个计数器向下溢出事件当,TIMx_ARR=0 x36,时,计数器向下计数模式如图,10.10,所示图,10.10,向下计数模式实例(,TIMx_ARR=0X36,),中央对齐模式(向上,/,向下计数),在中央对齐模式中,计数器从,0,开始计数到自动加载的值(,TIMx_ARR,寄存器),产生一个计数器溢出事件,然后向下计数到,0,,并且产生一个计数器下溢事件;然后再从,0,开始重新计数当,TIMx_ARR=0 x06,时,计数器向下计数模式如图,11.11,所示图,10.11,中央对齐模式,10.3.5 PWM,输出过程分析,定时器可以利用,GPIO,引脚进行脉冲输出,在配置为比较输出、,PWM,输出功能时,捕获,/,比较寄存器,TIMx_CCR,被用,做,比较功能,下面把它简称为比较寄存器这里直接举例说明定时器的,PWM,输出工作过程:若配置脉冲计数器,TIMx_CNT,为向上计数,而重载寄存器,TIMx_ARR,被配置为,N,,即,TIMx_CNT,的当前计数值数值,X,在,TIMxCLK,时钟源的驱动下不断累加,当,TIMx_CNT,的数值,X,大于,N,时,会重置,TIMx_CNT,数值为,0,并重新计数。

而在,TIMx_CNT,计数的同时,,TIMx_CNT,的计数值,X,会与比较寄存器,TIMx_CCR,预先存储的数值,A,进行比较当脉冲计数器,TIMx_CNT,的数值,X,小于比较寄存器,TIMx_CCR,的值,A,时,输出高电平(或低电平);相反地,当脉冲计数器的数值,X,大于或等于比较寄存器的值,A,时,输出低电平(或高电平)如此循环,得到的输出脉冲周期就为重载寄存器,TIMx_ARR,存储的数值(,N+1,)乘以触发脉冲的时钟周期,其脉冲宽度则为比较寄存器,TIMx_CCR,的值,A,乘以触发脉冲的时钟周期,即输出,PWM,的占空比为,A/(N+1),如图,10.12,,图中为重载寄存器,TIMx_ARR,被配置为,N=8,,向上计数;比较寄存器,TIMx_CCR,的值被设置为,4,、,8,、大于,8,、等于,0,时的输出时序图图中,OCxREF,即为,GPIO,引脚输出时序,,CCxIF,为触发中断的时序图,10.12 PWM,输出模式,10.3.7,定时器时间的计算,定时时间由,TIM_TimeBaseInitTypeDef,中的,TIM_Prescaler,和,TIM_Period,设定。

TIM_Period,的大小实际上表示的是需要经过,TIM_Period,次计数后才能发生一次更新或中断TIM_Prescaler,是时钟预分频数设脉冲频率为,TIMxCLK,,定时公式为,T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK,假设系统时钟是,72MHz,,时钟系统部分初始化程序如下所述:,TIM_TimeBaseStructure.TIM_Period=1999,;,/,计数值,1999,TIM_TimeBaseStructure.TIM_Prescaler=35999,;,/,分频,359999,系统时间为,T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK,=(1999+1)*(35999+1)/72M=1s,10.3.8,定时器中断,以,TIM2,为例,,TIM2,中断通道在中断向量表中的序号为,28,,优先级为,25,TIM2,。

下载提示
相似文档
正为您匹配相似的精品文档