定时器(-)技术方案.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。 下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。 我们举一个例子说明。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值; 当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用); 当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。 有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时。 基本组成与几个概念 TIMER主要是由三部分组成: 1、时基单元。 2、 输入捕获。捕获输入,测量输入PWM的频率与脉宽 3、 输出比较。比较输出,产生PWM输出,单脉冲输出,强制电平输出 4、同步单元。 与外部信号同步(从模式),与内部连带信号同步(主、从模式) 模式控制:从模式控制和主模式控制。 几个概念: 为了方便的看图,我对里面出现的名词和符号做个注解: ??TIMx_ETR:TIMER外部触发引脚 ETR:外部触发输入 ETRP:分频后的外部触发输入 ETRF:滤波后的外部触发输入 ITRx:内部触发x(由另外的定时器触发) TI1F_ED:TI1的边沿检测器。 TI1FP1/2:滤波后定时器1/2的输入 TRGI:触发输入??TRGO:触发输出?? CK_PSC:应该叫分频器时钟输入 CK_CNT:定时器时钟。(定时周期的计算就靠它) TIMx_CHx:TIMER的输入脚??TIx:应该叫做定时器输入信号x ICx:输入比较x??ICxPS:分频后的ICx OCx:输出捕获x??OCxREF:输出参考信号 图中有阴影的部分都是有一影子寄存器的,并且是可使能的。而在PWM模式中影子寄存器是必须打开的。 再看图的左边分别为TIMX_ETR,TIMX_CH1,TIMX_CH2...这些引脚分别为输入引脚,而TIMX_ETR为触发引脚,再看右边的TIMX_CH1这些分别为比较输出引脚。 定时器有三种时钟可看图上方一矩形,内有“触发控制器,从模式控制器,编码器”。 1、可以看到内部时钟(CK_INT)连接到此矩形上。 2、外部触发引脚TIMX_ETR引脚经过滤波等处理形成ETRF信号也连接到此(由它可提供外部时钟模式2所说的时钟,同时它可以触发的作用) 3、再看ITR0,ITR1等信号也连接到此矩形中,这些信号为其它定时器输出的信号。(这也是手册中所讲使用一个定时器作为另一个定时器的预分频,那么驱动此定时器的定时器为主定时器,必须配置TIMX_CR2中的MMS位来确定它输出什么样的信号给从定时器。通过设置TIMX_SMCR中的TS位来选择哪个定时器来驱动当前定时器) 4、而TIMX_CH1~CH4也可以配置为触发输入引脚,也可以为定时器来提供时钟。 在TIMX_SMCR(从模式控制寄存器)中SMS中设置为000(关闭从模式)则使能定时器时钟,由内部时钟提供。当配置了SMS位为非零值,并且在TS位中选择了输入引脚,并且使能了相关的时钟则会使用该引脚上的某个边沿或者某个电平来驱动计数器计数,而外部时钟2则只能由ETR来提供时钟,外部时钟1也可以由ETR来提供,或者其它引脚提供。 (这部分内容为定时时钟源的选择) 时钟源的选择 8个时钟,分成4大类 ? 定时器编程,就是中断的编程。因为使用定时器必定要使用到中断。?? 步骤一:RCC_Configuration();//设置系统时钟,包括时钟RCC的配置,倍频到72MHZ?????? 步骤二: GPIO的配置,使用函数为GPIO_cfg();,该函数的实现如下:(使用每隔一秒点亮一次LED灯来做实验,所以需要配置对应GPIO的引脚) void?GPIO_cfg()?? ?? {?? ?? ???????GPIO_InitTypeDef?GPIO_InitStructure;?? ?? ??????RCC_APB2PeriphClockCmd(?RCC_APB2Periph_USART1?|RCC_APB2Periph_GPIOA?|?RCC_APB2Periph_GPIOB?|?RCC_APB2Periph_GPIOC

文档评论(0)

奇缘之旅 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档