STM32定时器原理
一、简介
不同的芯片定时器的数量不同,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输出,输入捕获,输出比较,输出三相电机互补信号 |
二、定时器框图
- 基本定时器框图
从图中可知,基本计时器的来源只有一个,并且来自内部时钟TIMxCLK,该时钟为经过APB1预分频器分频后提供,基本定时器跟APB1总线时钟的关系如下:
- 如果APB1预分频系数为1,则基本定时器的时钟等于APB1总线时钟。
- 如果APB1预分频系数不为1,则基本定时器的时钟等于APB1总线时钟经过分频后的2倍。
比如APB1总线经过2分频后的时钟为36MHZ,那么基本定时器的时钟就是72MHZ3(36*2)。
- 预分频器:用来驱动基本定时器的计数器计数。基本定时器的预分频器是一个16位的预分频器,预分频器可以对定时器时钟进行1~65536之间的任何一个数进行分频。计算方式如下:
计算方式如下:
定时器工作时钟 = 来自APB1的时钟/(预分频系数+1) - CNT计数器:该计数器能能向上计数,最大计数值位65535。基本定时器的计数器从0开始向上计数,当计数器的值与自动重装载寄存器相等时产生更新事件,并清零从头开始计数。
- 自动重装载寄存器:该寄存器装着计数器能计数的最大数值。当基本定时器的计数器计数到这个值的时候,如果使能了中断。定时器就会产生溢出中断。
- 通用定时器框图
从图中可以看出来,通用定时器的时钟来源一共有4个:
- 内部时钟(CK_INT)
- 外部时钟模式1:外部输入脚(TIMx_CHx)
- 外部时钟模式2:外部触发输入(TIMx_ETR)
- 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。
通过基本定时器与通用定时器框图的对比,可以看出通用定时器多了3个时钟输入源,4个TIMx_CHx捕获通道,4个TIMx_CHx比较通道,现在可以很容易的看明白通用定时器的框图。对于通用定时器,常用的时钟源是内部时钟(CK_INT)用法和基本定时器的使用方法一直。
- 高级控制定时器框图
从图中可以看出,高级定时器比通用定时器多了,输入通道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定时器原理的更多相关文章
- STM32通用定时器原理
/************************************************************************************************ 转载 ...
- 【转载】stm32定时器-----珍藏版
今天看到一个讲解定时器特别细致入微的文章,真是难得... 原文地址:http://www.cnblogs.com/zjvskn/p/5751591.html 一.STM32通用定时器原理 STM32 ...
- 用STM32定时器测量信号频率——测频法和测周法[原创cnblogs.com/helesheng]
工业测试与控制系统中,经常需要对未知信号的频率进行测试.对于10MHz以下的信号,用单片机(MCU)定时器完成这项任务显然是最常见和最佳的选择.目前性价比最高的单片机STM32拥有功能强大且数量众多的 ...
- JavaScript定时器原理分析
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...
- stm32定时器中断类型分析
一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...
- STM32 定时器用于外部脉冲计数
STM32 定时器用于外部脉冲计数 第一步,设置GPIO GPIO_InitTypeDef GPIO_InitStructure; /* PA0,PA12-> 左右脉冲输入 */GPIO_Ini ...
- STM32 定时器用于外部脉冲计数(转)
源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的). STM32中的定时器有很多用法: ( ...
- stm32定时器输出移相PWM(非主从模式)
背景:由于项目需要,需要stm32输出任意相角度的PWM 前提知识: 1.stm32定时器的Tim,一般有多个OC.具体差别根据型号来定. 2.定时器的使能,理论上是多个通道同时使能 3.TIM_OC ...
- 实现quartz定时器及quartz定时器原理介绍
今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍
- STM32定时器时间的计算方法
本文出自:https://wenku.baidu.com/view/e3bdfb7601f69e31433294c4.htmlSTM32定时器时间的计算方法STM32中的定时器有很多用法:(一)系统时 ...
随机推荐
- 原生js实现table的增加删除
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 一文搞懂Javaweb的响应状态码
一.状态码大类 状态码分类 说明 1xx 响应中--临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它 2xx 成功--表示请求已经被成功接收,处理已完成 3xx 重定向- ...
- llama2+localGPT打造纯私有知识助手
通过部署llama2系列,可以构建本地私有的知识小助手 用来输出一写周报.月报,甚至辅助数据分析都可以(想想都很轻松) 想要大模型支持特定的数据集,就需要进行专业的fine-turing 但是fine ...
- 03-【HAL库】STM32实现SYN6288模块语音播报.md
一.什么是SYN6288模块 1.概述 SYN6288 中文语音合成芯片是北京宇音天下科技有限公司于2010 年初推出的一款性/价比更高,效果更自然的一款中高端语音合成芯片.SYN6288 通过异 ...
- npm 直接安装 GitHub/GitLab 仓库代码及 npm link 本地调试
一.npm 直接安装 GitHub/GitLab 仓库代码 语法 npm install <git remote url> 示例 命令: npm i git@github.com:maze ...
- OpenHarmony——内核对象队列之算法详解(下)
前言 OpenAtom OpenHarmony(以下简称"OpenHarmony") LiteOS-M 内核是面向 IoT 领域构建的轻量级物联网操作系统内核,具有小体积.低功耗. ...
- 微服务集成Spring Cloud Zipkin实现链路追踪并集成Dubbo
1.什么是ZipKin Zipkin 是一个根据 Google 发表的论文" Dapper" 进行开源实现的分布式跟踪系统. Dapper是Google 公司内部的分布式追踪系统, ...
- C++ 编译器和链接器的完全指南
C++是一种强类型语言,它的编译和链接是程序开发过程中不可或缺的两个环节.编译器和链接器是两个非常重要的概念.本文将详细介绍C++中的编译器和链接器以及它们的工作原理和使用方法. 编译器 编译器是将源 ...
- 知识图谱在RAG中的应用探讨
在这篇文章中,我们来详细探讨知识图谱(KG)在RAG流程中的具体应用场景. 缘起 关于知识图谱在现在的RAG中能发挥出什么样的作用,之前看了360 刘焕勇的一个分享,简单的提了使用知识图谱增强大模型的 ...
- HDC2021技术分论坛:鸿蒙智联设备开发,这五大法宝你应该拥有
作者:zhaowenguang,dinglu, 华为高级工程师 Huawei LiteOS是轻量级的开源物联网操作系统.智能硬件使能平台,可广泛应用于智能家居.穿戴式.车联网.制造业等领域,使物联网终 ...