- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定时器(时基和PWM输出)#.1 定时器功能简介区别于SysTick一般只用于系统时钟的计时,STM32的定时器外设功能强大得超出了想像力,《STM32参考手册》中仅对定时器的介绍就已经占了100多页。Stm32一共有8个都为16位的定时器。其中Tim6、Tim7是基本定时器;Tim2-Tim5是通用定时器;Tim1和Tim8是高级定时器。这些定时器使stm32具有定时、信号的频率测量、信号的PWM测量、PWM输出、三相6步电子控制及编码器接口等功能,都是专业为工控领域量身定做的。#.2 定时器工作分析#.2.1 基本定时器基本定时器TIM6和TIM7只具备最基本的定时功能,就是累加的时钟脉冲数超过(达到)预定值时,能触发中断或触发DMA请求。由于在芯片内部与DAC外设相连,可通过触发输出驱动DAC,也可以作为其它通用定时器的时钟基准。如下图这两个基本定时器使用的时钟源都是TIMxCLK,时钟源经过PSC预分频器后输入至脉冲计数器TIMx_CNT,基本定时器只能工作在向上计数模式,在重载寄存器TIMx_ARR中保存的是定时器的溢出值。工作时,脉冲计数器TIMx_CNT由时钟触发进行计数,当TIMx_CNT的计数值X等于重载寄存器中保存的数值N时,产生溢出事件,(实际情况是TIMx_CNT要完成0-N的全部计数,也就是说N这个数是要计完之后再触发响应中断或者DMA,这样TIMx_CNT实际完成了N+1次计数,所以在以后编程时,如果我们需要计1000次,参数应该配置成N=999,其它情况以此类推。相关内容可参考该定时器的计数模式)可触发中断或DMA请求。然后TIMx_CNT的值重新被置为0,重新向上计数。TIM6和TIM7的主要特性TIM6和TIM7定时器的主要功能包括:16位自动重装载累加计数器16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值分频触发DAC的同步电路在更新事件(计数器溢出)时产生中断/DMA请求#.2.2 TIM6和TIM7的功能时基单元这个可编程定时器的主要部分是一个带有自动重装载的16位累加计数器,计数器的时钟通过一个预分频器得到。软件可以读写计数器、自动重装载寄存器和预分频寄存器,即使计数器运行时也可以操作。时基单元包含:计数器寄存器(TIMx_CNT) 预分频寄存器(TIMx_PSC) 自动重装载寄存器(TIMx_ARR) 自动重装载寄存器是预加载的,每次读写自动重装载寄存器时,实际上是通过读写预加载寄存器实现。根据TIMx_CR1寄存器中的自动重装载预加载使能位(ARPE),写入预加载寄存器的内容能够立即或在每次更新事件时,传送到它的影子寄存器。当TIMx_CR1寄存器的UDIS位为“0”(UEV使能),则每当计数器达到溢出值时,硬件发出更新事件;软件也可以产生更新事件;关于更新事件的产生,随后会有详细的介绍。计数器由预分频输出CK_CNT驱动,设置TIMx_CR1寄存器中的计数器使能位(CEN)使能计数器计数。注意:实际的设置计数器使能信号CNT_EN相对于CEN滞后一个时钟周期。预分频器预分频可以以系数介于1至65536之间的任意数值对计数器时钟分频。它是通过一个16位寄存器(TIMx_PSC)的计数实现分频。因为TIMx_PSC控制寄存器具有缓冲,可以在运行过程中改变它的数值,新的预分频数值将在下一个更新事件时起作用。以下两图是在运行过程中改变预分频系数的例子。计数模式计数器从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。每次计数器溢出时可以产生更新事件;(通过软件或使用从模式控制器)设置TIMx_EGR寄存器的UG位也可以产生更新事件。设置TIMx_CR1中的UDIS位(为1)可以禁止产生UEV事件,这可以避免在写入预加载寄存器时更改影子寄存器。在清除UDIS位为“0”之前,将不再产生更新事件,但计数器和预分频器依然会在应产生更新事件时重新从0开始计数(但预分频系数不变)。另外,如果设置了TIMx_CR1寄存器中的URS(选择更新请求),设置UG位可以产生一次更新事件UEV,但不设置UIF标志(即没有中断或DMA请求)。当发生一次更新事件时,所有寄存器会被更新并(根据URS位)设置更新标志(TIMx_SR寄存器的UIF位):传送预装载值(TIMx_PSC寄存器的内容)至预分频器的缓冲区。自动重装载影子寄存器被更新为预装载值(TIMx_ARR)。以下是一些在TIMx_ARR=0x36时不同时钟频率下计数器工作的图示例子。和基本定时器相关的寄存器(共8个)TIM6和TIM7控制寄存器1(TIMx_CR1)TIM6和TIM7控制寄存器2(TIMx_CR2)TIM6和TIM7 DMA/中断使能寄存器(TIMx_
文档评论(0)