我是靠谱客的博主 虚幻柜子,最近开发中收集的这篇文章主要介绍STM32学习笔记(3) ——定时器(1),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

定时器结构框图解析(以高级定时器为例)

高级定时结构框图
定时器可以说是STM32中非常重要的一种外设,定时器的功能非常强大,同时其内部结构也比较复杂。充分掌握了定时器的结构框图对定时器的功能就能有一个大体上的把握。自己在运用时,时常遇到功能调不通的情况,最后究其原因还是定时器的配置出现问题。因此想通过这篇文章梳理一下自己的思路并且分享出来给大家做一个参考。本文就以高级定时器的结构框图为例,对其进行一个细致的解析。

1.时钟源

在这里插入图片描述

首先看一下上半部分,这部分主要用于选择计数器的触发源以及从模式的控制。一般定时器的触发源可以配置为以下四种:

  • 内部时钟源
  • 外部时钟模式1
  • 外部时钟模式2
  • 内部触发

内部时钟源顾名思义,就是采用STM32的内部时钟作为定时器的时钟源。
外部时钟模式1采用定时器的外部通道引脚的输入信号(TI1,TI2)作为定时器的时钟源。TI1(TI2)通过滤波和边缘检测,得到信号TI1FP2(TI2FP2)作为计数器的触发信号。值得注意的是,只有TI1FP2和TI2FP2可以作为时钟源,也就是说想要使用外部时钟模式1,时钟信号只能通过通道1或者通道2输入
外部时钟模式2采用定时器ETR引脚输入信号作为时钟源信号。
内部触发模式是把一个定时器作为另一个定时器的预分频器。将主定时器的TRGO信号作为从定时器的ITRx输入作为时钟源。

其实,外部时钟模式1和内部触发模式都应该算是定时器的主从模式,只是触发源不同,因此通过cubMX进行配置时必须开启主从模式并配置触发源。主从模式不仅可以提供时钟源,同时可以实现计数器(CNT)的启动、复位、停止等控制,也可以通过产生TRGO信号控制其他定时器。

2.时基单元

在这里插入图片描述
该部分主要实现了计数器的功能,时钟源信号通过预分频器产生计数脉冲信号(CK_CNT),计数器可以进行向上(自增)或向下(自减)计数,当计数值达到预设的自动重装载寄存器(ARR)的值时可以产生溢出事件或者中断信号。配合捕获比较寄存器(CCR)还可以实现输入捕获和输出比较功能。

3.输入捕获

框图的下半部分的功能就是实现输入捕获及输出比较,很多定时器的应用也得依托于这两个功能。首先说一说输入捕获。
在这里插入图片描述
首先通过定时器的通道引脚获得输入信号(TI1~TI4),该信号要进行边缘检测及滤波处理,边缘检测类型及滤波的参数都是可以进行配置的。这里说一下它采样的原理,比如采样参数设置为4,若设置为上升沿检测,就相当于边沿检测器要检测到4次上升沿才视为一次上升沿触发信号。下一个部分看上去就比较复杂,这就涉及到一个很重要的点,定时器的输入通道和输入捕获寄存器并不一定是一一对应的,TI1和TI2可以视为一组,TI3和TI4视为一组,每一组的TIx和CCRx是可以相互匹配使用的。以TI1为例,在CubMX中配置为direct mode,则通过TI1FP1与CCR1相连;若配置为indirect mode,则通过TI1FP2与CCR2相连。之后就是通过预分频器,若检测到输入触发信号就将当前的计数值锁存到捕获比较寄存器(CCR)中。
在这里在说一点,计数器(CNT)的计数状态是不会被输入捕获所影响的。若想通过输入捕获对计数器进行控制(复位、启动、停止等),则要将输入捕获配置为从模式。

4.输出比较

在这里插入图片描述
输出比较通过将CNT与预设的CCR的值进行比较,当CNT=CCR时,改变信号OCxREF的状态。输出比较有下图所示的几种模式,不同模式产生的OCxREF信号不同。
在这里插入图片描述
OCxREF通过死区(高级定时才有)和输出控制器产生输出信号OCx和OCxN(高级定时器才有)。死区时间和输出的有效电平等都是可以进行配置的,具体的配置解析这里就不赘述了。

本文主要是参考了STM32的官方手册以及野火的零死角玩转STM32,感兴趣的也可以自己去查阅这些资料。

最后

以上就是虚幻柜子为你收集整理的STM32学习笔记(3) ——定时器(1)的全部内容,希望文章能够帮你解决STM32学习笔记(3) ——定时器(1)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部