第10章通用定时器_第1页
第10章通用定时器_第2页
第10章通用定时器_第3页
第10章通用定时器_第4页
第10章通用定时器_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

1、第第10章章 通用定时器通用定时器l10.1 通用定时器概述通用定时器概述l 通用通用TIMx (TIM2、TIM3、TIM4和和TIM5)定时器功能包括:定时器功能包括: l 16位向上、向下、向上位向上、向下、向上/向下自动装载计数器向下自动装载计数器 l 16位可编程位可编程(可以实时修改可以实时修改)预分频器,计数器时钟频率预分频器,计数器时钟频率的分频系数为的分频系数为165536之间的任意数值之间的任意数值 l 4个独立通道:个独立通道: l 输入捕获输入捕获 l 输出比较输出比较 l PWM生成生成(边缘或中间对齐模式边缘或中间对齐模式) l 单脉冲模式输出单脉冲模式输出 l 使

2、用外部信号控制定时器和定时器互连的同步电路使用外部信号控制定时器和定时器互连的同步电路 l 如下事件发生时产生中断如下事件发生时产生中断/DMA: l 更新:计数器向上溢出更新:计数器向上溢出/向下溢出,计数器初始化向下溢出,计数器初始化(通过通过软件或者内部软件或者内部/外部触发外部触发) l 触发事件触发事件(计数器启动、停止、初始化或者由内部计数器启动、停止、初始化或者由内部/外部外部触发计数触发计数) l 输入捕获输入捕获 l 输出比较输出比较 l 支持针对定位的增量支持针对定位的增量(正交正交)编码器和霍尔传感器电路编码器和霍尔传感器电路 l 触发输入作为外部时钟或者按周期的电流管理

3、触发输入作为外部时钟或者按周期的电流管理 10.2 通用定时器基本功能通用定时器基本功能l10.2.1 时基单元时基单元l 通用定时器的主要部分是一个通用定时器的主要部分是一个16位计数器和与其相关的自位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。计数器时钟由预分频器分频得到。向上向下双向计数。计数器时钟由预分频器分频得到。 l 计数器、自动装载寄存器和预分频器寄存器可以由软件读计数器、自动装载寄存器和预分频器寄存器可以由软件读写,在计数器运行时仍可以读写。写,在计数器运行时仍可以读写。 l 时基单元

4、包含:时基单元包含: l 计数器寄存器计数器寄存器(TIMx_CNT) l 预分频器寄存器预分频器寄存器 (TIMx_PSC) l 自动装载寄存器自动装载寄存器 (TIMx_ARR) l 自动装载寄存器是预先装载的,写或读自动重装载寄存器自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动寄存器中的自动装载预装载使能位装载预装载使能位(ARPE)的设置,预装载寄存器的内容被的设置,预装载寄存器的内容被立即或在每次的更新事件立即或在每次的更新事件UEV时传送到影子寄存器。当计时传送到影子寄存器。当计数器达到溢出条件并

5、当数器达到溢出条件并当TIMx_CR1寄存器中的寄存器中的UDIS位等于位等于0时,产生更新事件。时,产生更新事件。l 计数器由预分频器的时钟输出计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了驱动,仅当设置了计数器计数器TIMx_CR1寄存器中的计数器使能位寄存器中的计数器使能位(CEN)时,时,CK_CNT才有效。才有效。l 预分频器可以将计数器的时钟频率按预分频器可以将计数器的时钟频率按1到到65536之间的任意之间的任意值分频。预分频器寄存器被设为值分频。预分频器寄存器被设为x时,就表示经过时,就表示经过x+1个定个定时器时钟后,计数器寄存器加时器时钟后,计数器寄存器加1。它是基

6、于一个。它是基于一个(在在TIMx_PSC寄存器中的寄存器中的)16位寄存器控制的位寄存器控制的16位计数器。这位计数器。这个控制寄存器带有缓冲器,它能够在工作时被改变。新的个控制寄存器带有缓冲器,它能够在工作时被改变。新的预分频器参数在下一次更新事件到来时被采用。预分频器参数在下一次更新事件到来时被采用。 图图10-1当预分频器的参数从当预分频器的参数从1变到变到2时,计数器的时序图时,计数器的时序图图图10-2 当预分频器的参数从当预分频器的参数从1变到变到4时,计数器的时序图时,计数器的时序图l10.2.2 时钟选择时钟选择l 计数器时钟可由下列时钟源提供:计数器时钟可由下列时钟源提供:

7、 l 内部时钟内部时钟(CK_INT) l 外部时钟模式外部时钟模式1:外部输入脚:外部输入脚(TIx) l 外部时钟模式外部时钟模式2:外部触发输入:外部触发输入(ETR) l 内部触发输入内部触发输入(ITRx):使用一个定时器作为另一个定时:使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器器的预分频器,如可以配置一个定时器Timer1而作为另一而作为另一个定时器个定时器Timer2的预分频器。的预分频器。l 内部时钟源内部时钟源(CK_INT) l 当当TIMx_SMCR寄存器的寄存器的SMS=000,则,则CEN、DIR(TIMx_CR1寄存器寄存器)和和UG位位(TIM

8、x_EGR寄存器寄存器)是事实上的控制位,并是事实上的控制位,并且只能被软件修改且只能被软件修改(UG位仍被自动清除位仍被自动清除)。只要。只要CEN位被写位被写成成1,预分频器的时钟就由内部时钟,预分频器的时钟就由内部时钟CK_INT提供。提供。 l 外部时钟源模式外部时钟源模式1 l 当当TIMx_SMCR寄存器的寄存器的SMS=111时,此模式被选中。计数时,此模式被选中。计数器可以在选定输入端的每个上升沿或下降沿计数。器可以在选定输入端的每个上升沿或下降沿计数。l 例如,要配置向上计数器在例如,要配置向上计数器在T12输入端的上升沿计数,使输入端的上升沿计数,使用下列步骤:用下列步骤:

9、 l 配置配置TIMx_CCMR1寄存器寄存器CC2S=01,配置通道,配置通道2检测检测TI2输输入的上升沿入的上升沿 l (2)配置)配置TIMx_CCMR1寄存器的寄存器的IC2F3:0,选择输入滤波,选择输入滤波器带宽器带宽(如果不需要滤波器,保持如果不需要滤波器,保持IC2F=0000) ,捕获预分频,捕获预分频器不用作触发,所以不需要对它进行配置器不用作触发,所以不需要对它进行配置 l (3)配置)配置TIMx_CCER寄存器的寄存器的CC2P=0,选定上升沿极性,选定上升沿极性 l (4)配置)配置TIMx_SMCR寄存器的寄存器的SMS=111,选择定时器外,选择定时器外部时钟

10、模式部时钟模式1 l (5)配置)配置TIMx_SMCR寄存器中的寄存器中的TS=110,选定,选定TI2作为作为触发输入源触发输入源 l (6)设置)设置TIMx_CR1寄存器的寄存器的CEN=1,启动计数器。,启动计数器。l 当上升沿出现在当上升沿出现在TI2,计数器计数一次,且,计数器计数一次,且TIF标志被设置标志被设置l 外部时钟源模式外部时钟源模式2l 选定此模式的方法为:令选定此模式的方法为:令TIMx_SMCR寄存器中的寄存器中的ECE=1 。l 计数器能够在外部触发计数器能够在外部触发ETR的每一个上升沿或下降沿计数的每一个上升沿或下降沿计数。 l 例如,要配置在例如,要配置

11、在ETR下每下每2个上升沿计数一次的向上计数器个上升沿计数一次的向上计数器,使用下列步骤:,使用下列步骤: l (1)本例中不需要滤波器,置)本例中不需要滤波器,置TIMx_SMCR寄存器中的寄存器中的ETF3:0=0000 l (2)设置预分频器,置)设置预分频器,置TIMx_SMCR寄存器中的寄存器中的ETPS1:0=01 l (3)设置在)设置在ETR的上升沿检测,置的上升沿检测,置TIMx_SMCR寄存器中的寄存器中的ETP=0 l (4)开启外部时钟模式)开启外部时钟模式2,置,置TIMx_SMCR寄存器中的寄存器中的ECE=1 l (5)启动计数器,置)启动计数器,置TIMx_CR

12、1寄存器中的寄存器中的CEN=1。l 计数器在每计数器在每2个个ETR上升沿计数一次。上升沿计数一次。l10.2.3 计数器模式计数器模式l 计数模式包括:向上计数模式、向下计数模式、中央对齐计数模式包括:向上计数模式、向下计数模式、中央对齐模式(向上模式(向上/向下模式)向下模式)l 向上计数模式:向上计数模式:l 在向上计数模式中,计数器从在向上计数模式中,计数器从0计数到自动加载值计数到自动加载值(TIMx_ARR计数器的内容计数器的内容),然后重新从,然后重新从0开始计数并且产开始计数并且产生一个计数器溢出事件。生一个计数器溢出事件。 l 每次计数器溢出时可以产生更新事件,在每次计数器

13、溢出时可以产生更新事件,在TIMx_EGR寄存寄存器中设置器中设置UG位也同样可以产生一个更新事件。位也同样可以产生一个更新事件。 l 设置设置TIMx_CR1寄存器中的寄存器中的UDIS位,可以禁止更新事件;位,可以禁止更新事件;这样可以避免在向预装载寄存器中写入新值时更新影子寄这样可以避免在向预装载寄存器中写入新值时更新影子寄存器。存器。l 当发生一个更新事件时,所有的寄存器都被更新,硬件同当发生一个更新事件时,所有的寄存器都被更新,硬件同时时(依据依据URS位位)设置更新标志位设置更新标志位(TIMx_SR寄存器中的寄存器中的UIF位位)。预分频器的缓冲区被置入预装载寄存器的值。预分频器

14、的缓冲区被置入预装载寄存器的值(TIMx_PSC寄存器的内容寄存器的内容)。自动装载影子寄存器被重新置入预装载。自动装载影子寄存器被重新置入预装载寄存器的值寄存器的值(TIMx_ARR)。 l 当当TIMx_ARR=0 x36时计数器在不同时钟频率下的动作如下时计数器在不同时钟频率下的动作如下图:图:图图10-3 计数器时序图,内部时钟分频因子为计数器时序图,内部时钟分频因子为1图图10-4 计数器时序图,内部时钟分频因子为计数器时序图,内部时钟分频因子为2图图10-5 计数器时序图,内部时钟分频因子为计数器时序图,内部时钟分频因子为4图图10-6 计数器时序图,内部时钟分频因子为计数器时序图

15、,内部时钟分频因子为Nl 当当ARPE=0时的更新事件时的更新事件(TIMx_ARR没有预装入没有预装入) 图图10-7计数器时序图,当计数器时序图,当ARPE=0时的更新时的更新事件事件(TIMx_ARR没有预装入没有预装入)l 当当ARPE=1时的更新事件时的更新事件(预装了预装了TIMx_ARR) 图图10-8计数器时序图,当计数器时序图,当ARPE=1时的更新时的更新事件事件(预装了预装了TIMx_ARR)l 向下计数模式向下计数模式l 在向下模式中,计数器从自动加载值在向下模式中,计数器从自动加载值(TIMx_ARR计数器的计数器的内容内容)开始向下计数到开始向下计数到0,然后从自动

16、装入的值重新开始并,然后从自动装入的值重新开始并且产生一个计数器向下溢出事件。且产生一个计数器向下溢出事件。l 具体用法同向上计数模式一样。具体用法同向上计数模式一样。l 中央对齐模式中央对齐模式l 在中央对齐模式,计数器从在中央对齐模式,计数器从0开始计数到自动加载的值开始计数到自动加载的值(TIMx_ARR寄存器寄存器)1,产生一个计数器溢出事件,然后向,产生一个计数器溢出事件,然后向下计数到下计数到1并且产生一个计数器下溢事件;然后再从并且产生一个计数器下溢事件;然后再从0开始开始重新计数。重新计数。 l 在这个模式,不能写入在这个模式,不能写入TIMx_CR1中的中的DIR方向位。它由

17、硬方向位。它由硬件更新并指示当前的计数方向。件更新并指示当前的计数方向。 l 各种事件响应和向上计数器模式一样。各种事件响应和向上计数器模式一样。l 当当TIMx_APR=0 x06,内部时钟分频因子为,内部时钟分频因子为1时,计数器时时,计数器时序图如下:序图如下:图图10-9中央对齐模式下,计数器时序图,内部时钟分频因中央对齐模式下,计数器时序图,内部时钟分频因子为子为1,TIMx_ARR=0 x6l10.2.4 PWM模式模式l PWM模式下可以用通用定时器产生一个由模式下可以用通用定时器产生一个由TIMx_ARR寄存寄存器确定频率、由器确定频率、由TIMx_CCRx寄存器确定占空比的信

18、号。寄存器确定占空比的信号。 l 在在TIMx_CCMRx寄存器中的寄存器中的OCxM位写入位写入110(PWM模式模式1)或或111(PWM模式模式2),能够独立地设置每个,能够独立地设置每个OCx输出通道产输出通道产生一路生一路PWM。必须设置。必须设置TIMx_CCMRx寄存器寄存器OCxPE位以使位以使能相应的预装载寄存器,最后还要设置能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器寄存器的的ARPE位,位,(在向上计数或中心对称模式中在向上计数或中心对称模式中)使能自动重装使能自动重装载的预装载寄存器。载的预装载寄存器。 l 仅当发生一个更新事件的时候,预装载寄存器才能被传送

19、仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设到影子寄存器,因此在计数器开始计数之前,必须通过设置置TIMx_EGR寄存器中的寄存器中的UG位来初始化所有的寄存器。位来初始化所有的寄存器。 l OCx的极性可以通过软件在的极性可以通过软件在TIMx_CCER寄存器中的寄存器中的CCxP位位设置,它可以设置为高电平有效或低电平有效。设置,它可以设置为高电平有效或低电平有效。TIMx_CCER寄存器中的寄存器中的CCxE位控制位控制OCx输出使能。输出使能。l 根据根据TIMx_CR1寄存器中寄存器中CMS位的状态,定时器能够产生边位的状态,定

20、时器能够产生边沿对齐的沿对齐的PWM信号或中央对齐的信号或中央对齐的PWM信号。信号。 l PWM 边沿对齐模式边沿对齐模式l 向上计数配置模式下,向上计数配置模式下,PWM模式模式1下,当下,当TIMx_CNTTIMx_CCRx时参考信号时参考信号OCxREF为低,否则为高为低,否则为高。如果。如果TIMx_CCRx中的比较值大于中的比较值大于TIMx_ARR中的自动重装中的自动重装载值,则载值,则OCxREF保持为保持为1。该模式下不能产生占空比为。该模式下不能产生占空比为0的的PWM波形。波形。 l PWM 中央对齐模式中央对齐模式l 当当TIMx_CR1寄存器中的寄存器中的CMS位不为

21、位不为00时,为中央对齐模时,为中央对齐模式式(所有其他的配置对所有其他的配置对OCxREF/OCx信号都有相同的作用信号都有相同的作用)。根据不同的根据不同的CMS位设置,比较标志可以在计数器向上计数位设置,比较标志可以在计数器向上计数时被置时被置1、在计数器向下计数时被置、在计数器向下计数时被置1、或在计数器向上、或在计数器向上和向下计数时被置和向下计数时被置1。TIMx_CR1寄存器中的计数方向位寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。由硬件更新,不要用软件修改它。l 如图如图10-11给出了一些中央对齐的给出了一些中央对齐的PWM波形的例子波形的例子 l TIMx_

22、ARR=8 l PWM模式模式1 l TIMx_CR1寄存器中的寄存器中的CMS=01,在中央对齐模式,在中央对齐模式1时,时,当计数器向下计数时设置比较标志。当计数器向下计数时设置比较标志。 l 使用中央对齐模式的提示:使用中央对齐模式的提示: l 进入中央对齐模式时,使用当前的向上进入中央对齐模式时,使用当前的向上/向下计数配置向下计数配置;这就意味着计数器向上还是向下计数取决于;这就意味着计数器向上还是向下计数取决于TIMx_CR1寄存器中寄存器中DIR位的当前值。此外,软件不能同时修改位的当前值。此外,软件不能同时修改DIR和和CMS位。位。 l 不推荐当运行在中央对齐模式时改写计数器

23、,因为这不推荐当运行在中央对齐模式时改写计数器,因为这会产生不可预知的结果。特别地:会产生不可预知的结果。特别地: l 如果写入计数器的值大于自动重加载的值如果写入计数器的值大于自动重加载的值(TIMx_CNTTIMx_ARR),则方向不会被更新。例如,如果,则方向不会被更新。例如,如果计数器正在向上计数,它就会继续向上计数。计数器正在向上计数,它就会继续向上计数。l 如果将如果将0或者或者TIMx_ARR的值写入计数器,方向被更新,的值写入计数器,方向被更新,但不产生更新事件但不产生更新事件UEV。 l 使用中央对齐模式最保险的方法,就是在启动计数器使用中央对齐模式最保险的方法,就是在启动计

24、数器之前产生一个软件更新之前产生一个软件更新(设置设置TIMx_EGR 位中的位中的UG位位),不,不要在计数进行过程中修改计数器的值。要在计数进行过程中修改计数器的值。 图图10-11 中央对齐的中央对齐的PWM波形波形(APR=8)10.3 通用定时器寄存器描述通用定时器寄存器描述l10.3.1 控制寄存器控制寄存器1 TIMx_CR1l10.3.2 控制寄存器控制寄存器2 TIMx_CR2l10.3.3 从模式控制寄存器从模式控制寄存器TIMx_SMCRl TIMx内部触发连接与内部触发连接与TS对应关系如下:对应关系如下:l10.3.4 DMA/中断使能寄存器中断使能寄存器TIMx_D

25、IERl10.3.5 状态寄存器状态寄存器TIMx_SRl10.3.6 事件产生寄存器事件产生寄存器TIMx_EGRl10.3.7 捕获捕获/比较模式寄存器比较模式寄存器1 TIMx_CCMR1l 偏移地址:偏移地址:0 x18 l 复位值:复位值:0 x0000 l 通道可用于输入通道可用于输入(捕获模式捕获模式)或输出或输出(比较模式比较模式),通道的方,通道的方向由相应的向由相应的CCxS定义。该寄存器其它位的作用在输入和输定义。该寄存器其它位的作用在输入和输出模式下不同。出模式下不同。OCxx描述了通道在输出模式下的功能,描述了通道在输出模式下的功能,ICxx描述了通道在输出模式下的功

26、能。因此必须注意,同描述了通道在输出模式下的功能。因此必须注意,同一个位在输出模式和输入模式下的功能是不同的。一个位在输出模式和输入模式下的功能是不同的。l10.3.8 捕获捕获/比较寄存器比较寄存器2 TIMx_CCMR2l10.3.9 捕获捕获/比较使能寄存器比较使能寄存器TIMx_CCERl10.3.10 计数器计数器TIMx_CNTl10.3.11 预分频器预分频器TIMx_PSCl10.3.12 自动重装载寄存器自动重装载寄存器TIMx_ARRl10.3.13 捕获捕获/比较寄存器比较寄存器1 TIMx_CCR1l10.3.14 捕获捕获/比较寄存器比较寄存器2 TIMx_CCR2l

27、 偏移地址:偏移地址:0 x38 l 复位值:复位值:0 x0000l 参考参考TIMx_CCR1。l10.3.15 捕获捕获/比较寄存器比较寄存器3 TIMx_CCR3l 偏移地址:偏移地址:0 x3C l 复位值:复位值:0 x0000l 参考参考TIMx_CCR1。l10.3.16 捕获捕获/比较寄存器比较寄存器4 TIMx_CCR4l 偏移地址:偏移地址:0 x40 l 复位值:复位值:0 x0000l 参考参考TIMx_CCR1。l10.3.17 DMA控制寄存器控制寄存器TIMx_DCRl10.3.18 连续模式的连续模式的DMA地址地址TIMx_DMAR10.4 TIM库函数解读

28、库函数解读l 下面对上节中涉及到的一些库函数进行解读,方便读者更下面对上节中涉及到的一些库函数进行解读,方便读者更容易理解;更多函数详解参考容易理解;更多函数详解参考ST官网的官网的API函数源码或者函数源码或者ST的固件库手册说明;的固件库手册说明;TIM_TypeDeff,在文件,在文件“stm32f10 x_map.h”中定义如下:中定义如下: l typedef struct l l vu16 CR1; l u16 RESERVED0; l vu16 CR2; l u16 RESERVED1; l vu16 SMCR; l u16 RESERVED2; l vu16 DIER; l u

29、16 RESERVED3; l vu16 SR; l u16 RESERVED4; l vu16 EGR; l u16 RESERVED5; l vu16 CCMR1; l u16 RESERVED6; l vu16 CCMR2; l u16 RESERVED7; l vu16 CCER; l u16 RESERVED8; l vu16 CNT; l u16 RESERVED9; l vu16 PSC; l u16 RESERVED10; l vu16 ARR; l u16 RESERVED113; l vu16 CCR1; l u16 RESERVED12; l vu16 CCR2; l u

30、16 RESERVED13; l vu16 CCR3; l u16 RESERVED14; l vu16 CCR4; l u16 RESERVED153; l vu16 DCR; l u16 RESERVED16; l vu16 DMAR; l u16 RESERVED17; l l TIM_TypeDef;l TIM库函数库函数l 1 函数函数TIM_DeInitl 功能描述:将外设功能描述:将外设TIMx寄存器重设为缺省值,例:寄存器重设为缺省值,例: TIM_DeInit(TIM2);l 2 函数函数TIM_TimeBaseInitl 功能描述:根据功能描述:根据TIM_TimeBase

31、InitStruct中指定的参数初始中指定的参数初始化化TIMx的时间基数单位,例:的时间基数单位,例: l TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; l TIM_TimeBaseStructure.TIM_Period = 0 xFFFF; l TIM_TimeBaseStructure.TIM_Prescaler = 0 xF; l TIM_TimeBaseStructure.TIM_ClockDivision = 0 x0; l TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMod

32、e_Up; l TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);l TIM_TimeBaseInitTypeDef structure l TIM_TimeBaseInitTypeDef定义于文件定义于文件“stm32f10 x_tim.h”: l typedef struct l l u16 TIM_Period; l u16 TIM_Prescaler; l u8 TIM_ClockDivision; l u16 TIM_CounterMode; l TIM_TimeBaseInitTypeDef; l TIM_Period设置了在下

33、一个更新事件装入活动的自动重装设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在载寄存器周期的值。它的取值必须在0 x0000和和0 xFFFF之间之间。l TIM_Prescaler设置了用来作为设置了用来作为TIMx时钟频率除数的预分频时钟频率除数的预分频值。它的取值必须在值。它的取值必须在0 x0000和和0 xFFFF之间。之间。l TIM_ClockDivision设置了时钟分割。设置了时钟分割。l TIM_CKD_DIV1:TDTS = Tck_tim l TIM_CKD_DIV2:TDTS = 2Tck_tim l TIM_CKD_DIV4:TDTS = 4

34、Tck_timl TIM_CounterMode选择了计数器模式。选择了计数器模式。l TIM_CounterMode_Up:TIM向上计数模式向上计数模式l TIM_CounterMode_Down:TIM向下计数模式向下计数模式l TIM_CounterMode_CenterAligned1:TIM中央对齐模式中央对齐模式1计计数模式数模式l TIM_CounterMode_CenterAligned2:TIM中央对齐模式中央对齐模式2计计数模式数模式l TIM_CounterMode_CenterAligned3:TIM中央对齐模式中央对齐模式3计计数模式数模式l 3 函数函数TIM_O

35、CInitl 功能描述:根据功能描述:根据TIM_OCInitStruct中指定的参数初始化外中指定的参数初始化外设设TIMx,例:,例: l TIM_OCInitTypeDef TIM_OCInitStructure; l TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; l TIM_OCInitStructure.TIM_Channel = TIM_Channel_1; l TIM_OCInitStructure.TIM_Pulse = 0 x3FFF; l TIM_OCInitStructure.TIM_OCPolarity = TIM_

36、OCPolarity_High; l TIM_OCInit(TIM2, & TIM_OCInitStructure);l TIM_OCInitStruct:l 指向结构指向结构TIM_OCInitTypeDef的指针,包含了的指针,包含了TIMx时间基时间基数单位的配置信息数单位的配置信息l TIM_OCInitTypeDef structure l TIM_OCInitTypeDef定义于文件定义于文件“stm32f10 x_tim.h”: l typedef struct l l u16 TIM_OCMode; l u16 TIM_Channel; l u16 TIM_Pulse;

37、 l u16 TIM_OCPolarity; l l TIM_OCInitTypeDef; l TIM_OCMode选择定时器模式。选择定时器模式。l TIM_OCMode_Timing:TIM输出比较时间模式输出比较时间模式l TIM_OCMode_Active:TIM输出比较主动模式输出比较主动模式l TIM_OCMode_Inactive:TIM输出比较非主动模式输出比较非主动模式l TIM_OCMode_Toggle:TIM输出比较触发模式输出比较触发模式l TIM_OCMode_PWM1:TIM脉冲宽度调制模式脉冲宽度调制模式1 l TIM_OCMode_PWM2:TIM脉冲宽度调制

38、模式脉冲宽度调制模式2l TIM_Channel选择通道。选择通道。l TIM_Channel_1:使用:使用TIM通道通道1 l TIM_Channel_2:使用:使用TIM通道通道2 l TIM_Channel_3:使用:使用TIM通道通道3 l TIM_Channel_4:使用:使用TIM通道通道4l TIM_Pulse l TIM_Pulse设置了待装入捕获比较寄存器的脉冲值。它的设置了待装入捕获比较寄存器的脉冲值。它的取值必须在取值必须在0 x0000和和0 xFFFF之间。之间。l l TIM_OCPolarity l TIM_OCPolarity输出极性。输出极性。l TIM_O

39、CPolarity_High:TIM输出比较极性高输出比较极性高l TIM_OCPolarity_Low:TIM输出比较极性低输出比较极性低l 4 函数函数TIM_ICInitl 功能描述:根据功能描述:根据TIM_ICInitStruct中指定的参数初始化外设中指定的参数初始化外设TIMx,例:,例: l TIM_DeInit(TIM2); l TIM_ICStructInit(&TIM_ICInitStructure); l TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_PWMI; l TIM_ICInitStructure.TIM_Cha

40、nnel = TIM_Channel_1; l TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; l TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; l TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; l TIM_ICInitStructure.TIM_ICFilter = 0 x0; l TIM_ICInit(TIM2, &TIM_ICInitStructure);l TIM_

41、ICInitStruct:指向结构:指向结构TIM_ICInitTypeDef的指针,包的指针,包含了含了TIMx的配置信息的配置信息l TIM_ICInitTypeDef structure l TIM_ICInitTypeDef定义于文件定义于文件“stm32f10 x_tim.h”: l typedef struct l l u16 TIM_ICMode; l u16 TIM_Channel; l u16 TIM_ICPolarity; l u16 TIM_ICSelection; l u16 TIM_ICPrescaler; l u16 TIM_ICFilter; l l TIM_IC

42、InitTypeDef; l TIM_ICMode l TIM_ICMode选择了选择了TIM输入捕获模式。输入捕获模式。l TIM_ICMode_ICAP:TIM使用输入捕获模式使用输入捕获模式l TIM_ICMode_PWMI:TIM使用输入使用输入PWM模式模式l TIM_Channel l TIM_Channel选择通道。选择通道。l TIM_Channel_1 使用使用TIM通道通道1 l TIM_Channel_2 使用使用TIM通道通道2 l TIM_Channel_3 使用使用TIM通道通道3 l TIM_Channel_4 使用使用TIM通道通道4l TIM_ICPolari

43、ty l TIM_ICPolarity输入活动沿。输入活动沿。l TIM_ICPolarity_Rising:TIM输入捕获上升沿输入捕获上升沿l TIM_ICPolarity_Falling:TIM输入捕获下降沿输入捕获下降沿l TIM_ICSelection l TIM_ICSelection选择输入。选择输入。l TIM_ICSelection_DirectTI:TIM输入输入2,3或或4选择对应地与选择对应地与IC1或或IC2或或IC3或或IC4相连相连l TIM_ICSelection_IndirectTI:TIM输入输入2,3或或4选择对应地选择对应地与与IC2或或IC1或或IC4

44、或或IC3相连相连l TIM_ICSelection_TRC:TIM输入输入2,3或或4选择与选择与TRC相连相连l TIM_ICPrescaler l TIM_ICPrescaler设置输入捕获预分频器。设置输入捕获预分频器。l TIM_ICPSC_DIV1:TIM捕获在捕获输入上每探测到一个边捕获在捕获输入上每探测到一个边沿执行一次沿执行一次l TIM_ICPSC_DIV2:TIM捕获每捕获每2个事件执行一次个事件执行一次l TIM_ICPSC_DIV3:TIM捕获每捕获每3个事件执行一次个事件执行一次l TIM_ICPSC_DIV4:TIM捕获每捕获每4个事件执行一次个事件执行一次l T

45、IM_ICFilter l TIM_ICFilter选择输入比较滤波器。该参数取值在选择输入比较滤波器。该参数取值在0 x0和和0 xF之间。之间。l 5 函数函数TIM_TimeBaseStructInitl 功能描述:把功能描述:把TIM_TimeBaseInitStruct中的每一个参数按缺中的每一个参数按缺省值填入省值填入l TIM_TimeBaseInitStruct:指向结构:指向结构TIM_TimeBaseInitTypeDef的指针,待初始化的指针,待初始化l l TIM_TimeBaseInitStruct缺省值缺省值l TIM_Period:TIM_Period_Reset

46、_Mask l TIM_Prescaler:TIM_Prescaler_Reset_Mask l TIM_CKD:TIM_CKD_DIV1 l TIM_CounterMode:TIM_CounterMode_Upl 例:例: l TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; l TIM_TimeBaseStructInit(& TIM_TimeBaseInitStructure);l 6 函数函数TIM_OCStructInitl 功能描述:把功能描述:把TIM_OCInitStruct中的每一个参数按缺省值中的每一个参数按缺省值

47、填入填入l TIM_OCInitStruct:指向结构:指向结构TIM_OCInitTypeDef的指针,的指针,待初始化待初始化l 例:例: l TIM_OCInitTypeDef TIM_OCInitStructure; l TIM_OCStructInit(& TIM_OCInitStructure);l TIM_OCInitStruct缺省值缺省值l TIM_OCMode:TIM_OCMode_Timing l TIM_Channel:TIM_Channel_1 l TIM_Pulse:TIM_Pulse_Reset_Mask l TIM_OCPolarity:TIM_OCPo

48、larity_Highl 7 函数函数TIM_ICStructInitl 功能描述:把功能描述:把TIM_ICInitStruct中的每一个参数按缺省值填中的每一个参数按缺省值填入入l TIM_ICInitStruct:指向结构:指向结构TIM_ICInitTypeDef的指针,待的指针,待初始化初始化l 例:例:l TIM_ICInitTypeDef TIM_ICInitStructure; l TIM_ICStructInit(& TIM_ICInitStructure);l TIM_ICInitStruct缺省值缺省值l TIM_ICMode:TIM_ICMode_ICAP l

49、TIM_Channel:TIM_Channel_1 l TIM_ICPolarity:TIM_ICPolarity_Rising l TIM_ICSelection:TIM_ICSelection_DirectTI l TIM_ICPrescaler:TIM_ICPSC_DIV1 l TIM_ICFilter:TIM_ICFilter_Maskl 8 函数函数TIM_Cmdl 功能描述:使能或者失能功能描述:使能或者失能TIMx外设外设l 例:例:TIM_Cmd(TIM2, ENABLE);l 9 函数函数TIM _ITConfigl 功能描述:使能或者失能指定的功能描述:使能或者失能指定的T

50、IM中断中断l 例:例: TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE );l TIM_IT l 输入参数输入参数TIM_IT使能或者失能使能或者失能TIM的中断的中断l TIM_IT_Update TIM中断源中断源l TIM_IT_CC1:TIM捕获捕获/比较比较1中断源中断源l TIM_IT_CC2:TIM捕获捕获/比较比较2中断源中断源l TIM_IT_CC3:TIM捕获捕获/比较比较3中断源中断源l TIM_IT_CC4:TIM捕获捕获/比较比较4中断源中断源l TIM_IT_Trigger:TIM触发中断源触发中断源l 10 函数函数TIM_Inter

51、nalClockConfigl 功能描述:设置功能描述:设置TIMx内部时钟内部时钟l 例:例:TIM_InternalClockConfig(TIM2);l 11 函数函数TIM_ITRxExternalClockConfigl 功能描述:设置功能描述:设置TIMx内部触发为外部时钟模式内部触发为外部时钟模式l 例:例:TIM_ITRxExternalClockConfig(TIM2, TIM_TS_ITR3);l TIM_InputTriggerSource l TIM_InputTriggerSource选择选择TIM输入触发。输入触发。l TIM_TS_ITRx:TIM内部触发内部触发

52、x(0-3)l 12 函数函数TIM_TIxExternalClockConfigl 功能描述:设置功能描述:设置TIMx触发为外部时钟,例:触发为外部时钟,例: l TIM_TIxExternalClockConfig(TIM2, TIM_TS_TI1FP1, l TIM_ICPolarity_Rising, 0);l l TIM_TIxExternalCLKSource l TIM_TIxExternalCLKSource选择选择TIMx外部时钟源。外部时钟源。l TIM_TS_TI1FP1:TIM IC1连接到连接到TI1 l TIM_TS_TI1FP2:TIM IC2连接到连接到TI2

53、 l TIM_TS_TI1F_ED:TIM IC1连接到连接到TI1:使用边沿探测:使用边沿探测l 13 函数函数TIM_ETRClockMode1Configl 功能描述:配置功能描述:配置TIMx外部时钟模式外部时钟模式1,例:,例: l TIM_ExternalCLK1Config(TIM2,TIM_ExtTRGPSC_DIV2,TIM_ExtTRGPolarity_NonInverted, 0 x0)l TIM_ExtTRGPrescaler l TIM_ExtTRGPrescaler设置设置TIMx外部触发预分频。外部触发预分频。l TIM_ExtTRGPSC_OFF:TIM ETR

54、P 预分频预分频 OFF l TIM_ExtTRGPSC_DIV2:TIM ETRP频率除以频率除以2 l TIM_ExtTRGPSC_DIV4:TIM ETRP频率除以频率除以4 l TIM_ExtTRGPSC_DIV8:TIM ETRP频率除以频率除以8l TIM_ExtTRGPolarity l TIM_ExtTRGPolarity设置设置TIMx外部触发极性。外部触发极性。l TIM_ExtTRGPolarity_Inverted:TIM外部触发极性翻转:低外部触发极性翻转:低电平或下降沿有效电平或下降沿有效l TIM_ExtTRGPolarity_NonInverted:TIM外部触

55、发极性非翻外部触发极性非翻转:高电平或上升沿有效转:高电平或上升沿有效l 14 函数函数TIM_ETRClockMode2Configl 功能描述:配置功能描述:配置TIMx外部时钟模式外部时钟模式2,例:,例: l TIM_ExternalCLK2Config(TIM2, TIM_ExtTRGPSC_DIV2, l TIM_ExtTRGPolarity_NonInverted, 0 x0);l 15 函数函数TIM_ETRConfigl 功能描述:配置功能描述:配置TIMx外部触发,例:外部触发,例: l TIM_ExternalCLK2Config(TIM2, TIM_ExtTRGPSC_

56、DIV2, l TIM_ExtTRGPolarity_NonInverted, 0 x0);l 16 函数函数TIM_SelectInputTriggerl 功能描述:选择功能描述:选择TIMx输入触发源,例:输入触发源,例: l void TIM_SelectInputTrigger(TIM2, TIM_TS_ITR3);l TIM_InputTriggerSource l TIM_InputTriggerSource选择选择TIMx输入触发源。输入触发源。l TIM_TS_ITR0:TIM内部触发内部触发0 l TIM_TS_ITR1:TIM内部触发内部触发1 l TIM_TS_ITR2:

57、TIM内部触发内部触发2 l TIM_TS_ITR3:TIM内部触发内部触发3 l TIM_TS_TI1F_ED:TIM TL1 边沿探测器边沿探测器l TIM_TS_TI1FP1:TIM经滤波定时器输入经滤波定时器输入1 l TIM_TS_TI2FP2:TIM经滤波定时器输入经滤波定时器输入2 l TIM_TS_ETRF:TIM外部触发输入外部触发输入l 17 函数函数TIM_PrescalerConfigl 功能描述:设置功能描述:设置TIMx预分频,例:预分频,例: l u16 TIMPrescaler = 0 xFF00; l TIM_PrescalerConfig(TIM2, TIM

58、Prescaler, TIM_PSCReloadMode_Immediate);l l TIM_PSCReloadMode l TIM_PSCReloadMode选择预分频重载模式。选择预分频重载模式。l TIM_PSCReloadMode_Update:TIM预分频值在更新事件装预分频值在更新事件装入入l TIM_PSCReloadMode_Immediate:TIM预分频值即时装入预分频值即时装入l 18 函数函数TIM_CounterModeConfigl 功能描述:设置功能描述:设置TIMx计数器模式计数器模式l 例:例:TIM_CounterModeConfig(TIM2, TIM_

59、Counter_CenterAligned1);l 19 函数函数TIM_ForcedOC1Configl 功能描述:置功能描述:置TIMx输出输出1为活动或者非活动电平为活动或者非活动电平l 例:例:TIM_ForcedOC1Config(TIM2, TIM_ForcedAction_Active);l TIM_ForcedActionl 输出信号的设置动作取值输出信号的设置动作取值l TIM_ForcedAction_Active:置为:置为OCxREF上的活动电平上的活动电平l TIM_ForcedAction_InActive:置为:置为OCxREF上的非活动电平上的非活动电平l 20

60、 函数函数TIM_ForcedOC2Configl 功能描述:置功能描述:置TIMx输出输出2为活动或者非活动电平为活动或者非活动电平l 例:例: TIM_ForcedOC2Config(TIM2, TIM_ForcedAction_Active);l 21 函数函数TIM_ARRPreloadConfigl 功能描述:使能或者失能功能描述:使能或者失能TIMx在在ARR上的预装载寄存器上的预装载寄存器l 例:例:TIM_ARRPreloadConfig(TIM2, ENABLE);l 22函数函数TIM_SelectCCDMAl 功能描述:选择功能描述:选择TIMx外设的捕获比较外设的捕获比较DMA源源l 例:例:TIM_SelectCCDM

温馨提示

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

评论

0/150

提交评论