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
本文来自博客园,作者:浇筑菜鸟,转载请注明原文链接:https://www.cnblogs.com/jzcn/p/15813088.html
如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除。同时本人深表歉意,并致以崇高的谢意! cn_jiaozhu@qq.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App