第6章高级定时器TIMX讲述.pptx

  1. 1、本文档共102页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章高级定时器TIMX讲述

STM32定时器的工作原理 STM32之所以能够实现定时,是单片机内部在计数脉冲(来自晶振) T = 1/F F为频率 例如:我们以51单片机举例,假设单片机搭配12MHz的晶振,由于51单片机是12分频(即1个机器周期有12个时钟周期),则单片机的最小定时时间为 12MHz / 12 = 1MHz T = 1 / 1MHz = 1us STM32定时器的工作原理 最小定时时间 T = 1 / 1MHz = 1us 51单片机定时器: 方式0 13位 最大定时时间间隔 2^13=8.192ms 方式1 16位 最大定时时间间隔 2^16=65.536ms 方式2 8位 最大定时时间间隔 2^8=256us STM32定时器的工作原理 由此我们知道对于一个定时器而言要做到精确定时需要关注2个内容 1.分频器(分频比) 2.定时计数器的值 STM32定时器类型 按功能划分 ● 2个高级控制定时器 TIM1 TIM8 可分配6个通道的三相PWM发生器(多用于电机控制) ● 4个普通定时器 TIM2 TIM3 TIM4 TIM5 每个定时器有4个输入捕获/输出比较/PWM/脉冲计数 STM32定时器类型 ● 2个基本定时器 TIM6 TIM7 主要用于产生DAC触发信号 ● 2个看门狗定时器—— 独立看门狗 窗口看门狗 ● 系统时基定时器 SysTick 24位递减计数器 自动重加载 常用于产生延时 us级 ms级 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。 下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。 STM32高级定时/计数器 STM32高级定时/计数器 举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。 基本定时器寄存器示意图 STM32定时器的时钟 CK_CNT 表示定时器工作频率 TIMx_PSC 表示分频系数 则定时器的工作频率计算公式为 CK_CNT=定时器时钟/ (TIMx_PSC +1) 由此我们可得到STM32单片机1个时钟周期为: T=1/ CK_CNT 例如普通定时器模块的时钟为72MHz,分频比位7199,那么我们想要得到一个1秒钟的定时,定时计数器的值需要设定为 TIMx_ARR = 10 000 因为72 000 000 / 7200 = 10KHz 时钟周期T=1/10KHz=100us 100us × 10 000 = 1S 结论 :分频比7199 定时计数器的值 10 000 定时时间T公式为: T=(TIMx_PSC +1)(TIM_Period)/TIMxCLK 举例:基本定时器编程步骤 定时器相关的库函数主要集中在固件库文件?stm32f10x_tim.h?和?stm32f10x_tim.c?文件中。 1)TIMx时钟使能。 2)初始化定时器参数,设置自动重装值,分频系数,计数方式等。 在库函数中,定时器的初始化参数是通过初始化函数?TIM_TimeBaseInit?实现的: voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*?TIM_TimeBaseInitStruct); 3)允许中断发生。 在库函数里面定时器中断使能是通过?TIM_ITConfig?函数来实现的: void?TIM_ITConfig(TIM_TypeDef*?TIMx,?uint16_t?TIM_IT,?FunctionalState?NewState); 基本功能:定时器7定时时间为0.5秒,定时时间到达后,翻转LED灯的状态,达到LED灯闪烁的效果,闪烁周期1秒 举例:基本定时器编程步骤 4)TIMx?中断优先级设置。 在定时器中断使能之后,因为要产生中断,必不可少的要设置?NVIC?相关寄存器,设置中断优先级。 5)允许?TIMx?工作,也就是使能?TIMx。 ?在固件库里面使能定时器的函数是通过?TIM_Cmd?函数来实现的: 6)编写中断服务函数。 在最后,还是要编写定时器中断服务函数,通过该函数来处理定时器产生的相关中断。在

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档