STM32单片机 定时器TIM
分三个部分学习第一部分,学习定时器定时基本功能,也就是定一个时间,然后让定时器每隔一个时间产生一个中断,来实现每隔一个固定时间执行一段程序的目的。比如要做个时钟、秒表、或者一些程序算法的时候,都需要定时中断的这个功能。第二部分,学习定时器输出比较功能。输出比较功能模块最常见的用途是产生PWM波形,用于驱动电机等设备。学习用STM32输出的PWM波形来驱动舵机和直流电机的例子。第三部分,主要学习定时器输入捕获功能,学习使用输入捕获这个模块来实现测量方波频率的例子。第四部分,学习定时器的编码接口,使用编码接口能够方便的读取正交编码器的输出波形,在编码电机测速中应用广泛。第一部分STM32中功能最强大、结构最复杂的外设——TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。可以看出来定时器就是计数器,当这个计数器的输入是一个准确可靠的基准时钟时,那它在对这个基准时钟进行计数的过程,实际上就是计时的过程。比如在STM32中,定时器的基准时钟一般都是主频72MHz,如果我对72MHz计72个数,那就是1MHz也就是1us的时间。如果计72000个数,那就是1KHz也就是1ms的时间。16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。计数器就是用来执行计数定时的一个寄存器,每来一个时钟,计数器就加1。预分频器,可以对计数器的时钟进行分频,让计数更加灵活。自动重装寄存器就是计数的目标值,就是计多少个时钟时申请中断。计数器、预分频器、自动重装寄存器构成了定时器最核心的部分,我们把这一块电路称为时基单元,这些都是16位的,2^16=65536。如果预分频器设置最大,自动重装也设置最大,那么定时器的最大定时时间就是59.65s。怎么算的:72M/65536/65536,得到的是中断频率,然后取倒数为59.65s。如果嫌这个时间不够长,STM32定时器还支持级联的模式,也就是一个定时器的输出当作另一个定时器的输入,这样加一起,最大定时时间就是59.65s乘2次65536,大概是8千多年。不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。根据复杂度和应用场景分为了高级定时器(最复杂)、通用定时器(最常用)、基本定时器(最简单)三种类型。定时器类型重复计数器、死区生成、互补输出、刹车输入等功能主要的是为了三相无刷电机设计的。从上图可以看出,这三种定时器是由高级到低级向下兼容的,高级定时器拥有通用定时器的全部功能,通用定时器又有基本定时器的全部功能。对于STM32F103C8T6芯片,它内部拥有的定时器资源是TIM1、TIM2、TIM3、TIM4,也就是一个高级定时器和三个通用定时器,没有基本定时器。注意:不同型号,定时器的数量是不同的,在操作外设之前要查询它是否有这个外设。基本定时器结构图预分频器、计数器、自动重装寄存器,他们构成了最基本的计数计时电路,所以这一块叫时基单元预分频器之前,连接的就是基准计数时钟的输入,最终来到控制器。由于基本定时器只能选择内部时钟,所以可以直接认为这根线直连到了输入端这里,也就是内部时钟CK_INT。内部时钟的来源是RCC_TIMxCLK,这里的频率值一般是系统的主频72MHz。预分频器,就是对输入频率提前进行分频操作,它可以对这个72MHz的计数时钟进行预分频,比如:这个寄存器写0,那就不分频,或者说是1分频,这时候输出频率=输入频率=72MHz;如果预分频器写1,那就是2分频,输出频率=输入频率/2=36MHz;如果写2,那就是3分频,输出=输入/3=24MHz,以此类推。所以预分频器的值和实际的分频系数相差了1,即实际分频系数=预分频器的值+1。这个预分频器是16位的,所以最大值可以写65535,也就是65536分频。计数器,可以对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就+1。这个计数器也是16位的,所以里面的值可以从0一直加到65535,如果再加的话,计时器就会回到0重新开始。所以计数器的值在计时过程中会不断自增运算,当自增运行到目标值时,产生中断,那就完成了定时任务,所以现在还需要一个存储目标值的寄存器,那就是自动重装寄存器了。自动重装寄存器,也是16位的,它存的就是我们写入的计数目标,当计数器等于目标值,计时时间到,自动重装寄存器就会产生中断、清零计数器,计数器自动开启下一次的计数计时。该箭头代表这里会产生中断信号,像这种计数器等于目标值产生的中断,称为“更新中断”,这个更新中断之后就会前往NVIC,我们再配置好NVIC的定时器通道,定时器的更新中断就能得到CPU的响应。该箭头代表产生一个事件,,对应的事件称为“更新事件”,更新事件不会触发中断,但可以触发内部其他电路工作。总结从基准时钟,到预分离器,再到计数器,计数器计数自增,同时不断与自动重装器比较,值相等时即计时时间到,这时就会同时产生更新中断和更新事件,CPU响应更新中断,就完成了我们定时中断任务。主模式触发DAC的功能能让内部的硬件在不受程序的控制下实现自动运行,实现硬件自动化,可以减轻CPU负担。在我们使用DAC时,可能会用DAC输出一段波形,那就需要每隔一段时间来触发一次DAC,让它输出下一个电压点。正常实现思路:先设置一个定时器产生中断,每隔一段时间在中断程序中调用代码手动触发一次DAC转换,然后DAC输出。但是这样会使主程序处于频繁被中断的状态,影响主程序的运行和其他中断的响应。主模式因此设计了主模式,使用主模式就可以把这个定时器的的更新事件映射到触发输出TRGO(Trigger Out)的位置,然后TRGO直接接到DAC的触发转换引脚上,这样定时器的更新就不需要通过中断来触发DAC转换,只需要把更新事件通过主模式映射到TRGO,然后TRGO就会直接去触发DAC了。通用定时器结构图中间部分和基本定时器结构一样,但是通用计数器的计数模式不止向上计数这一种,通用定时器和高级定时器还支持向下计数模式和中央对齐模式向下计数模式就是从重装值开始,向下自减到 0 之后回到重装值,同时申请中断,然后继续下一轮依次循环,这就是向下计数。中央对齐计数模式就是从 0 开始,先向上自增计到重装值申请中断,然后再向下自减到0,再申请中断,然后继续下一轮依次循环。

相关新闻

F3D 3D文件查看器实战指南:5 个命令工作流跑通渲染、质检与批量出图

F3D 3D文件查看器实战指南:5 个命令工作流跑通渲染、质检与批量出图

F3D 3D文件查看器实战指南:5 个命令工作流跑通渲染、质检与批量出图 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d 打开一个 3D 文件"看一眼",不该以等待半分钟为代价。…

2026/10/19 11:56:09 阅读更多 →
广告屏幕播放准备实战:FFmpeg转码、分段与质检避坑指南

广告屏幕播放准备实战:FFmpeg转码、分段与质检避坑指南

广告屏在大堂刚挂上去的那天下午,甲方负责人站在屏幕前等着看自己的片子上屏。演示设备接上网络,后台点了下发。等了大概半分钟,屏幕右上角出了个旋转的加载圈,然后直接黑屏,主机风扇倒是转得挺欢。那一刻我就知道&…

2026/10/19 11:55:08 阅读更多 →
生成引擎优化GEO:识别伪专业内容,掌握AI引用时代的核心逻辑

生成引擎优化GEO:识别伪专业内容,掌握AI引用时代的核心逻辑

这几年做内容、做网站、做数字营销的人,应该躲不开“GEO”这三个字母。GEO全称是Generative Engine Optimization,中文一般叫生成引擎优化,主要研究的是你的内容如何被现在这些AI对话式产品、生成式问答引擎引用和推荐。我必须先说个结论&…

2026/10/19 11:55:08 阅读更多 →

最新新闻

kubeadm离线安装Kubernetes集群:镜像准备与常见故障排查

kubeadm离线安装Kubernetes集群:镜像准备与常见故障排查

最近有个朋友问我,能不能在不折腾网络的前提下,用 kubeadm 装一个指定版本的 Kubernetes 集群。他试过几次 kubeadm init ,每次都在拉取 registry.k8s.io 这一步超时,要么就是预检阶段卡了几分钟直接报错。这个问题在受网络限…

2026/10/19 20:31:29 阅读更多 →
UDP+TCP+多线程+Swing:局域网P2P即时通信课设全解析

UDP+TCP+多线程+Swing:局域网P2P即时通信课设全解析

简介:广东工业大学计算机网络课程设计项目,实现基于P2P的局域网即时通信系统,面向计网课设、Java网络编程与P2P应用开发者。系统采用P2P架构,程序既是服务器又是客户端,通过3333端口扫描局域网在线对等方,完…

2026/10/19 20:29:26 阅读更多 →
约束路径规划+改进ICP:复杂曲面点云配准误差降88.2%

约束路径规划+改进ICP:复杂曲面点云配准误差降88.2%

1. 从一组实测数据说起:为什么基础ICP在复杂曲面上总是“差一口气”先把标题里那组数字摆出来:平均误差0.599mm,RMSE 0.826mm,相比基础ICP下降88.2%。做过三维重建的人看到这组数字,第一反应大概率是“降得有点狠”&am…

2026/10/19 20:29:26 阅读更多 →
基于SpringBoot+小程序的掌上智慧医疗预约挂号系统设计

基于SpringBoot+小程序的掌上智慧医疗预约挂号系统设计

1. 项目背景与选题价值每年毕设季都有大量同学私信问同一个问题:想做小程序类的管理系统,又怕撞题、怕做不出来、怕答辩被刁难。我给出的建议向来很直接——B端后台 C端小程序是毕业设计里性价比最高的组合,而这个"基于springboot小程序…

2026/10/19 20:28:21 阅读更多 →
五种经典边缘检测算子详解:从Roberts到Canny的MATLAB实现与对比

五种经典边缘检测算子详解:从Roberts到Canny的MATLAB实现与对比

1. 边缘检测与图像分割的整体思路做图像处理的人应该都有过这样的经历:拿到一张图,最先想知道的往往不是整幅图的颜色分布,而是“这张图里什么东西在哪个位置”。边缘检测就是回答这个问题的基础手段。所谓边缘,说白了就是图像中灰…

2026/10/19 20:28:21 阅读更多 →
中级开发者AI能力升级路线图:从会用AI到会评AI

中级开发者AI能力升级路线图:从会用AI到会评AI

给中级开发者的 AI 能力升级路线图这两年 AI 编程工具发展太快,几乎每隔几个月就有新东西出来。不少中级开发者心里其实挺焦虑的:一边是网上铺天盖地的“AI 取代程序员”论调,一边是各种新工具、新模型层出不穷,感觉不学就要掉队。…

2026/10/19 20:28:21 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →