本文介绍: 主要是对输入时钟进行计数,并在计数值达到设定值的时候触发中断定时器触发中断)在STM32中,定时器分为高级定时器(TIM1,TIM8),通用定时器(TIM2/3/4/5),基本定时器(TIM6/TIM7)本次博客我们主要针对基本和通用定时器进行介绍高级定时器通过手册简略了解即可,如有不懂的需要自己看看STM32 参考手册》,定时器介绍占了 1/5的篇幅,足见其重要性。

前言

       本篇博客主要学习了解定时器基本结构工作原理掌握定时器的驱动程序设计。本篇博客部分是自己收集整理,如有侵权请联系我删除

本次博客板子使用的是正点原子精英版,芯片是STM32F103ZET6,需要资料可以@我拿取。

博客内容原创,创作不易,转载请注明
————————————————

一. TIM定时介绍

  1. 定时器可以对输入时钟进行计数,并在计数值达到设定值时触发中断
  2. 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时
  3. 不仅具备基本的定时中断功能,而且还包含内外时钟选择、输入捕获输出比较编码器接口主从触发模式等多种功能
  4. 根据复杂度应用场景分为高级定时器、通用定时器、基本定时器三种类型

        本篇博客不介绍寄存器时序,因为针对新手,首先得学会了解基本概念和使用即可,后期自己深入了再看手册了解难度也不是很大。

二. TIM定时器简介

        主要是对输入的时钟进行计数,并在计数值达到设定值的时候触发中断(定时器触发中断)

在STM32中,定时器分为:高级定时器(TIM1,TIM8),通用定时器(TIM2/3/4/5),基本定时器(TIM6/TIM7)

本次博客我们主要针对基本和通用定时器进行介绍,高级定时器通过手册简略了解即可,如有不懂的需要自己去看看STM32 参考手册》,定时器的介绍占了 1/5 的篇幅,足见其重要性。

三. 基本定时器(TIM6/TIM7)

完成定时器的基本功能,即定时功能,开中断或DMA后,在计数器溢出时可以产生中断请求或DMA请求

1.TIM6TIM7简介以及特性

1)基本定时器TIM6TIM7包含一个16自动装载计数器,由各自的可编程分频驱动

2)可以作为通用定时器提供时间基准,特别地可以为数模转换器
(DAC)
提供时钟。实际上,它
们在芯片内部直接连接
DAC
通过触发输出直接驱动
DAC
        这2
个定时器是互相独立的,不共享任何资源

2.TIM6TIM7的主要特性


16
自动重装载累加计数器

16
位可编程
(
实时修改
)
分频器,用于对输入的时钟系数
1

65536
之间的任意数值
触发
DAC
同步电路
● 在更新事件(
计数器溢出
)
时产生中断
/DMA
请求
支持向上计数

3.基本定时器框图和介绍

4.基本定时器时钟选择  

5.基本定时器功能介绍

四 . 通用定时器(TIM2/3/4/5)

        STM32F1 的通用定时器是一个通过编程分频器(
PSC
)驱动的
16
位自动装载计数器

CNT
)构成。

1.TIM2/3/4/5简介

2.TIM2/3/4/5主要功能

3.通用定时器框图和介绍

4.通用定时器时钟选择 

  • 计数器时钟可由下列时钟源提供:
  • 内部时钟(CK_INT)
  • 外部时钟模式1外部输入脚(TIx)
  • 外部时钟模式2外部触发输入(ETR)
  • 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时 Timer1而作为另一个定时器Timer2的预分频器。

5.通用定时器功能介绍

五 .高级定时器(TIM1,TIM8)

1.TIM1TIM8简介

  • 高级控制定时器(TIM1TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。
  • 它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、 PWM嵌入死区时间的互补PWM)
  • 使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节
  • 高级控制定时器(TIM1TIM8)和通用定时器(TIMx)是完全独立的,它们不共享任何资源。它们 可以同步操作

2.TIM1TIM8主要特性

3.高级定时器框图和介绍

4.高级定时器时钟选择 

  • 计数器时钟可由下列时钟源提供:
  • 内部时钟(CK_INT)
  • 外部时钟模式1:外部输入脚(TIx)
  • 外部时钟模式2:外部触发输入(ETR)
  • 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时 Timer1而作为另一个定时器Timer2的预分频器。

 5.高级定时器功能介绍

六.定时器时基单元时序

● 预分频寄存器(TIMx_PSC):软件设置的分频系数+1  = 实际的分配系数
1)它的系数介于1-65536之间的任意值,对时钟进行分频,是一个16位寄存器
分频的意思就是对时钟周期时间进行分割
如果我们获取一个精确的1ms中断,如果不分频,72MHz的时钟对应每周期1/72us,十分不利于计算。这时候使用预分频器将其72分频后为1MHz,每周期1us,1000个计时周期即为1ms,这样既便于计算,定时也更加精确
2)16位计数器从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。
影子寄存器作用
        我们程序中能够访问的是自动重装载寄存器,而芯片中实际工作的是影子寄存器,也就是每次与计数器进行比较的寄存器是影子寄存器我们设定在自动重装载寄存器中的值在每次更新事件发生时传入影子寄存器,预分频器和影子寄存器的关系也是如此。
● 计数器寄存器(TIMx_CNT)

1)顾名思义,这就是一个计数的寄存器,在分频之后,每一个周期结束计数+1,因为也是一个16位的寄存器,所以它的范围也是在1-35536之间。

2)16位计数器从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。

● 自动重装载寄存器(TIMx_ARR)

1)当计数器和自动重装载寄存器相等时,就会触发更新中断,该寄存器是一个16位的,最大65536。

2)当触发中断后,就会更新数值,重新进行下一次判断,依次循环

3)决定计数器一个周期计数的次数,即定时器的周期,它也有缓冲器,即影子寄存器

所以我们在使用定时器的时候,就需要设置预分频系数和重装载值来确定需要更新中断的时间

       当开启影子寄存器时,只有在每次更新事件发生时,影子寄存器的值才更新为自动重装载寄存器中的值,重装载影子寄存器可以开,也可以关.但是,预分频寄存器的影子寄存器是不可以关掉的,它是一直开启的.

时钟选择详解

外部时钟的作用基本就是通过检测外部的脉冲来进行计时,可根据实际应用来了解。例如编码器,按键次数执行对应操作都可以

内部时钟源(CK_INT):

来自RCC的TIMx_CLK,即定时器本身的驱动时钟。

        通用定时器的内部时钟来源于APB1总线时钟,但是通用定时器的内部时钟是根据APB1总线时钟是否分频来决定的,如果APB1总线时钟预分频系数为1,则通用定时器的内部时钟就是APB1总线时钟;但是如果APB1总线时钟的分频系数为2,则通用定时器的内部时钟就是APB1总线时钟的2倍。

外部时钟模式1:外部输入引脚

来自定时器自身输入通道1或通道2的输入信号,经过极性选择和滤波以后生成的触发信号,连接到从模式控制器,进而控制计数器的工作;

来自通道1的输入信号经过上升沿、下降沿双沿检测生成的脉冲信号进行逻辑相或以后的信号就是TI1F_ED信号,即TI1F_ED双沿脉冲信号。

外部时钟模式2:外部触发输入ETR

来自于 外部触发脚[ETR脚] 经过极性选择、分频、滤波以后的信号,经过触发输入选择器,连接到从模式控制器。当然分频和滤波不是必需的,可以根据外来信号频率高低及信号干净度来决定。

ETR功能较全可以完成T1的工作但仅限于CH1通道,可以进行分频

内部触发输入(ITRx):

一般跟定时器级联有关系,增加定时时间(了解即可)

使用一个定时器作为另一个定时器的预分频器。如可以配置一个定时器Timer1
而作为另一个定时器
Timer2
的预分频器。
时钟源:

预分频器时序

  • 计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)
  • 计数器从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。
  • CK_PSC=72M

计数器时序

计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)= CK_PSC / (PSC + 1) / (ARR + 1)

计算中断时间:

定时器实现定时时间:

总结

        以上就是STM32定时器的简略教程,关于定时器的讲解手册讲了很多,但是对应入门的来说,我们得先了解他的作用概念学会使用为前提,所以如果需要更加深入就需要对照手册来了解了。接下来几篇博客将会介绍定时器中断,PWM和输入捕获,会教使用和代码,欢迎各位交流

   点赞收藏关注双击博主不定分享单片机知识,互相学习交流
————————————————
 

原文地址:https://blog.csdn.net/qq_49015270/article/details/134666361

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_26758.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注