STM32定时器.pptVIP

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32定时器.ppt

新语新知 STM32的定时器使用 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级 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 普通定时器相关的寄存器介绍及配制方法 第一步: 打开(使能)相应定时器的时钟信号 由于普通定时器使用的是低速外部时钟信号APB1,所以我们使能时钟信号时要采用函数: void RCC_APB1PeriphClockCmd (uint32_t?RCC_APB1Periph, FunctionalState?NewState?) 第二步: 配置四个寄存器的内容 计数器寄存器:TIMx_CNT 预分频器寄存器:TIMx_PSC 自动装载寄存器:TIMx_ARR (以上3个寄存器合起来成为时基单元) 控制寄存器:TIMx_CR1 计数器寄存器:TIMx_CNT 16位的计数器,设定值从1~65535 计数器模式 向上计数模式:计数器从0计数到设定的数值,然后重新从0开始计数并且产生一个计数器溢出事件。 向下计数模式:计数器从设定的数值开始向下计数到0,然后自动从设定的数值重新向下计数,并产生一个向下溢出事件。 中央对齐模式(向上/向下计数):计数器从0开始计数到设定的数值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;再从0开始重新计数。 预分频器寄存器:TIMx_PSC 预分频器可以讲计数器的时钟频率按1到65536之间的任意值分频,它是一个16位寄存器。 这个寄存器带有缓冲区,它能够在工作时被改变。新的预分频器参数在下一次更新事件到来时被采用。 预分频器寄存器在事件更新时采用 自动装载寄存器:TIMx_ARR 自动装载寄存器是预先装载的(要在使能定时器之前设定好),根据在TIMx_CR1寄存器中自动装载使能位(ARPE)的设置,立即或者在每次更新事件时传送到计数器。 立即加载计数器 更新事件时加载计数器 控制寄存器:TIMx_CR1 控制寄存器:TIMx_CR1 控制寄存器:TIMx_CR1 寄存器操作编程 void Timer3_Init(u16 arr,u16 psc) { RCC-APB1ENR |= 1 1; TIM3-ARR = arr;//设置重装载值 TIM3-PSC = psc;//设置分频系数 TIM3-DIER |= 1 0;//允许更新中断 TIM3-DIER |= 1 6;//允许TIME中断 TIM3-CR1 |= 1 0; MY_NVIC_Init(3,3,TIM3_IRQChannel,2); } 固件库操作编程 void Timer_Co

文档评论(0)

phljianjian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档