一、简介

不同的芯片定时器的数量不同,STM32F10x中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。

  • 基本定时器:TIM6、TIM7是基本定时器,只能向上计数,具备定时功能,没有外部IO口,所以不具备捕获和通道比较
  • 通用定时器:TIM2、TIM3、TIM4、TIM5是通用定时器,可以向上计数、向下计数、向上/下计数,具备时器功能、输出比较、输入捕捉,每个通用定时器具有4个外部IO口。
  • 高等定时器:TIM1、TIM8是高等定时器,可以向上计数、向下计数、向上/下计数,具备时器功能、输出比较、输入捕捉、输出三相电机互补信号,每个高等定时器有8个外部IO口。

    定时器分类:
定时器种类 计数器分别率 计数类型 产生DMA请求 捕获/比较通道 互补输出 应用场景
基本定时器(TIM6,TIM7) 16 向上 可以 4 主要应用于驱动DAC
通用定时器(TIM2-TIM5) 16 向上、向下 、向上/下 可以 4 定时器计数,PWM输出,输入捕获,输出比较
高级定时器(TIM1,TIM8) 16 向上、向下 、向上/下 可以 4 定时器计数,PWM输出,输入捕获,输出比较,输出三相电机互补信号

二、定时器框图

  1. 基本定时器框图



    从图中可知,基本计时器的来源只有一个,并且来自内部时钟TIMxCLK,该时钟为经过APB1预分频器分频后提供,基本定时器跟APB1总线时钟的关系如下:
  • 如果APB1预分频系数为1,则基本定时器的时钟等于APB1总线时钟。
  • 如果APB1预分频系数不为1,则基本定时器的时钟等于APB1总线时钟经过分频后的2倍。

比如APB1总线经过2分频后的时钟为36MHZ,那么基本定时器的时钟就是72MHZ3(36*2)。

  • 预分频器:用来驱动基本定时器的计数器计数。基本定时器的预分频器是一个16位的预分频器,预分频器可以对定时器时钟进行1~65536之间的任何一个数进行分频。计算方式如下:

    计算方式如下:

      定时器工作时钟 = 来自APB1的时钟/(预分频系数+1)
  • CNT计数器:该计数器能能向上计数,最大计数值位65535。基本定时器的计数器从0开始向上计数,当计数器的值与自动重装载寄存器相等时产生更新事件,并清零从头开始计数。
  • 自动重装载寄存器:该寄存器装着计数器能计数的最大数值。当基本定时器的计数器计数到这个值的时候,如果使能了中断。定时器就会产生溢出中断。
  1. 通用定时器框图



    从图中可以看出来,通用定时器的时钟来源一共有4个:
  • 内部时钟(CK_INT)
  • 外部时钟模式1:外部输入脚(TIMx_CHx)
  • 外部时钟模式2:外部触发输入(TIMx_ETR)
  • 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。

    通过基本定时器与通用定时器框图的对比,可以看出通用定时器多了3个时钟输入源,4个TIMx_CHx捕获通道,4个TIMx_CHx比较通道,现在可以很容易的看明白通用定时器的框图。对于通用定时器,常用的时钟源是内部时钟(CK_INT)用法和基本定时器的使用方法一直。
  1. 高级控制定时器框图



    从图中可以看出,高级定时器比通用定时器多了,输入通道TIMx_BKIN,比较通道多了DTG寄存器已经输出通道TIMx_CHxN

三、定时器的时间计算

  定时器的计数次数由自动重装载寄存器决定的,计数器从0开始向上计数,当计数器的值与自动重装载寄存器相等时,产生溢出。所以定时器的溢出时间计算公式如下:

  Time = ( PSC + 1 )( ARR + 1 )/ TIMxCLK(us)

ARR是自动重装载寄存器的值、TIMxCLK是时钟频率、PSC是预分频的值。

假设基本定时器TIMxCLK = 72MHZ,PSC = 71,ARR = 999,那么定时器的溢出时间为:

  Time = ( 71 + 1 )
( 71 + 1 )/ 72 = 1000(us) = 1(ms)

参考文献

STM32F103ZET6的基本定时器:https://www.cnblogs.com/h1019384803/p/11032712.html

菜鸟必看 | STM32通用定时器功能和用法:https://www.sohu.com/a/127978571_464086

STM32定时器功能概括:https://blog.csdn.net/qq_43460106/article/details/108401593

STM32定时器原理的更多相关文章

  1. STM32通用定时器原理

    /************************************************************************************************ 转载 ...

  2. 【转载】stm32定时器-----珍藏版

    今天看到一个讲解定时器特别细致入微的文章,真是难得... 原文地址:http://www.cnblogs.com/zjvskn/p/5751591.html 一.STM32通用定时器原理 STM32  ...

  3. 用STM32定时器测量信号频率——测频法和测周法[原创cnblogs.com/helesheng]

    工业测试与控制系统中,经常需要对未知信号的频率进行测试.对于10MHz以下的信号,用单片机(MCU)定时器完成这项任务显然是最常见和最佳的选择.目前性价比最高的单片机STM32拥有功能强大且数量众多的 ...

  4. JavaScript定时器原理分析

    .header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...

  5. stm32定时器中断类型分析

    一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...

  6. STM32 定时器用于外部脉冲计数

    STM32 定时器用于外部脉冲计数 第一步,设置GPIO GPIO_InitTypeDef GPIO_InitStructure; /* PA0,PA12-> 左右脉冲输入 */GPIO_Ini ...

  7. STM32 定时器用于外部脉冲计数(转)

    源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的). STM32中的定时器有很多用法: ( ...

  8. stm32定时器输出移相PWM(非主从模式)

    背景:由于项目需要,需要stm32输出任意相角度的PWM 前提知识: 1.stm32定时器的Tim,一般有多个OC.具体差别根据型号来定. 2.定时器的使能,理论上是多个通道同时使能 3.TIM_OC ...

  9. 实现quartz定时器及quartz定时器原理介绍

    今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍

  10. STM32定时器时间的计算方法

    本文出自:https://wenku.baidu.com/view/e3bdfb7601f69e31433294c4.htmlSTM32定时器时间的计算方法STM32中的定时器有很多用法:(一)系统时 ...

随机推荐

  1. [Java]静态代理、动态代理(基于JDK1.8)

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18002823 出自[进步*于辰的博客] 参考笔记一,P ...

  2. 超越极限!80Gbps高速传输,让您的数据瞬间飞速传递

    大文件传输是很多企业面临的挑战之一.基于传统的文件传输方法,由于许多原因,例如网络拥塞.数据包丢失.传播延迟等,导致文件的传输速度较慢.不稳定或不安全.尤其是对于像科研机构.金融公司和媒体制作公司等需 ...

  3. 一文搞懂Javaweb的响应状态码

    一.状态码大类 状态码分类 说明 1xx 响应中--临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它 2xx 成功--表示请求已经被成功接收,处理已完成 3xx 重定向- ...

  4. 从零开始学Spring Boot系列-集成MyBatis-Plus

    在Spring Boot应用开发中,MyBatis-Plus是一个强大且易于使用的MyBatis增强工具,它提供了很多实用的功能,如代码生成器.条件构造器.分页插件等,极大地简化了MyBatis的使用 ...

  5. #线段树#洛谷 4588 [TJOI2018]数学计算

    题目传送门 分析 由于曾经做过原题 所以就直接说了,因为每个数最多被除掉一次 所以可以用线段树维护区间乘,也就很简单了,删除就单点修改就行了 代码 #include <cstdio> #i ...

  6. 【LGR-069】洛谷 2 月月赛 II & EE Round 2

    目录 前言 洛谷 6101 [EER2]出言不逊 分析 代码 洛谷 6102 [EER2]谔运算 分析 代码 洛谷 6103 [EER2] 直接自然溢出啥事没有 分析 代码 洛谷 6105 [Ynoi ...

  7. Lustre架构介绍的阅读笔记-NFS兼容性

    本文是在阅读Introduction to Lustre* Architecture的Traditional Network File Systems vs Lustre时的笔记. Lustre is ...

  8. mysql 必知必会整理—视图[十二]

    前言 简单整理一下视图. 正文 视图: 需要MySQL 5 MySQL 5添加了对视图的支持.因此,本章内容适用于MySQL 5及以后的版本. 视图是虚拟的表.与包含数据的表不一样,视图只包含使用时动 ...

  9. maven 创建spring boot 需要的配置[一]

    前言 之所以写这个是因为现在官方推荐云创建: 所以标注一下maven project,创建后,如何导入spring boot. 正文 1.步骤一 在pom.xml 中加入: <dependenc ...

  10. python mmsql连接支持

    前言 因为我使用的是mmsql数据库,因为遇到一点坑,所以发布出来. 正文 准备工作: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 下载对应 ...