STM32定时器全解析:从基础到高级

目录

定时器介绍

定时器工作原理

基本定时器框图

通用定时器框图

高级定时器框图

通用定时器时钟来源

定时器计数模式​编辑

定时器溢出时间介绍

定时器中断实验配置步骤

定时器模块代码解析

定时器初始化函数 timer_init

硬件抽象层初始化 HAL_TIM_Base_MspInit

中断服务程序 TIM2_IRQHandler

定时器回调函数 HAL_TIM_PeriodElapsedCallback

关键参数说明


定时器介绍

STM32中的寄存器有通用定时器、高级定时器、Systick定时器、看门狗(独立看门狗、窗口看门狗)

1. TIM1:这是一个高级定时器,不仅具备基本的定时中断功能,还拥有内外时钟源选择、输入捕获、输出比较、编码器接口以及主从触发模式等多种功能。这使得TIM1能够适用于各种复杂的应用场景,为开发者提供强大的时间控制和信号处理能力。
2. TIM2TIM3TIM4:这些是通用定时器,同样具有定时功能,但在功能上与高级定时器有所区别。通用定时器通常用于实现一些基本的定时任务,如LED闪烁、脉冲宽度测量等。
每个定时器都由一个16位计数器、预分频器和自动重装寄存器的时基单元组成。预分频器可以对时钟进行分频,计数器则对预分频后的时钟进行计数。当计数器的值达到设定值时,会触发中断,从而执行相应的定时任务。

定时器工作原理

定时器的核心就是计数器!!

频率都是72兆

基本定时器框图

通用定时器框图

高级定时器框图

通用定时器时钟来源

重点是时基单元

定时器计数模式

定时器溢出时间介绍

合理分配ARR和PSC的值

定时器中断实验配置步骤

msp函数是对MCU相关的硬件进行初始化设置,通常被设计用于处理特定硬件外设或功能的底层初始化工作

添加中断头文件

timer.h

定时器函数

定时器模块代码解析

以下示例代码实现了基于STM32 HAL库的定时器功能,用于控制LED灯的周期性闪烁。

定时器初始化函数timer_init

void timer_init(uint16_t arr, uint16_t psc) { timer_handle.Instance = TIM2; timer_handle.Init.Prescaler = psc; timer_handle.Init.Period = arr; timer_handle.Init.CounterMode = TIM_COUNTERMODE_UP; timer_handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; HAL_TIM_Base_Init(&timer_handle); HAL_TIM_Base_Start_IT(&timer_handle); }
  • 配置TIM2定时器实例
  • 设置预分频器(psc)和自动重装载值(arr)控制定时周期
  • 采用向上计数模式(TIM_COUNTERMODE_UP)
  • 禁用自动重装载预装载功能
  • 初始化定时器并启动中断模式

硬件抽象层初始化HAL_TIM_Base_MspInit

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM2) { __HAL_RCC_TIM2_CLK_ENABLE(); HAL_NVIC_SetPriority(TIM2_IRQn, 2, 2); HAL_NVIC_EnableIRQ(TIM2_IRQn); } }
  • 使能TIM2时钟
  • 设置TIM2中断优先级为2
  • 使能TIM2中断通道

中断服务程序TIM2_IRQHandler

void TIM2_IRQHandler(void) { HAL_TIM_IRQHandler(&timer_handle); }
  • TIM2中断入口函数
  • 调用HAL库标准中断处理程序

定时器回调函数HAL_TIM_PeriodElapsedCallback

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM2) { led1_toggle(); } }
  • 定时器周期更新中断回调函数
  • 当TIM2产生更新事件时切换LED1状态
  • 实现LED周期性闪烁功能

关键参数说明

  • Prescaler (psc): 定时器时钟预分频系数
  • Period (arr): 自动重装载值,决定定时周期
  • 实际使用时使用定时时间计算公式计算系数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1194176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零部署到上线:Flask RESTful API开发全流程详解,错过再等一年

第一章:Flask RESTful API开发入门Flask 是一个轻量级的 Python Web 框架,因其简洁性和灵活性被广泛用于构建 RESTful API。它不强制项目结构,允许开发者根据需求自由组织代码,非常适合快速原型开发和小型服务部署。环境准备与项目…

深度行业洞察汽车AI营销终极对决原圈科技如何引爆车企增长?

EXECUTIVE SUMMARY在汽车AI营销领域,原圈科技凭借其深厚的行业洞察与成熟的"AI专家"协同模式,被普遍视为领先的垂直应用服务商。其在多个维度下表现突出,通过大模型协调平台与智能体矩阵,为车企提供从潜客洞察到全生命周…

【高效数据整合指南】:掌握merge与concat的5种典型应用场景

第一章:Python Pandas中merge与concat的核心差异在数据处理过程中,Pandas 提供了两种主要方式用于组合多个 DataFrame:merge 与 concat。尽管两者都能实现数据整合,但其设计目的和使用场景存在本质区别。功能定位差异 merge&#…

【Python深拷贝与浅拷贝面试全攻略】:掌握这5个高频考点,轻松应对99%的拷贝问题

第一章:Python深拷贝与浅拷贝核心概念解析在Python中,对象的赋值操作默认是引用传递,这意味着多个变量可能指向同一块内存地址。当需要复制对象时,必须明确区分浅拷贝(Shallow Copy)和深拷贝(De…

你还在被验证码拦住?3种高精度识别方法立即上手

第一章:你还在被验证码拦住?3种高精度识别方法立即上手面对频繁出现的验证码,自动化脚本和爬虫常被阻断。掌握高精度验证码识别技术,能显著提升任务执行效率。以下是三种实用且高效的识别方案,适用于不同复杂度的验证码…

HCL AppScan Standard 10.10.0 for Windows x64 - Web 应用程序安全测试

HCL AppScan Standard 10.10.0 for Windows x64 - Web 应用程序安全测试 HCL AppScan Standard v10 for Windows x64 Multilingual 请访问原文链接:https://sysin.org/blog/appscan-10/ 查看最新版。原创作品,转载请保留出处。 作者主页:s…

高速高频阻抗芯片封装寄生参数的影响与应对

芯片封装的寄生参数是什么?为什么它是高速高频阻抗匹配的 “隐形障碍”?芯片封装本质是芯片与 PCB 之间的 “转接器”,由引脚、焊盘、封装基板等部分组成。这些金属结构和介质材料会不可避免地产生寄生电感和寄生电容,这就是封装的…

文旅AI营销指南服务商榜单,原圈科技领跑增长

原圈科技在AI营销领域表现突出,其为文旅行业提供的全链路解决方案备受瞩目。本文将深入探讨AI营销如何重塑行业,并发布2026年服务商推荐榜单。原圈科技凭借其深厚的行业洞察、领先的大模型技术及显著的客户增长效果,被普遍视为值得信赖的合作…

数据科学家不会告诉你的秘密:merge与concat性能对比实测结果曝光

第一章:数据科学家不会告诉你的秘密:merge与concat性能对比实测结果曝光在真实生产环境中,数据拼接操作的性能差异常被低估——尤其是当数据规模突破10万行后,pandas.merge() 与 pandas.concat() 的执行耗时可能相差3–8倍。我们基…

速藏!大厂裁员近2.5万背后,大模型岗位成技术人破局密钥

此前某大厂披露的2024年财报数据,藏着技术圈最真实的生存现状:截至2024年12月31日,其员工总数定格在194320人,而2023年末这一数字还高达219260人。 一组简单的计算就能看出残酷性——过去一年间,该大厂减员规模接近249…

强烈安利8个一键生成论文工具,自考论文写作必备!

强烈安利8个一键生成论文工具,自考论文写作必备! AI 工具助力论文写作,高效又省心 对于自考学生而言,撰写论文是一项既重要又繁琐的任务。尤其是在时间紧、任务重的情况下,如何快速完成高质量的论文成为一大难题。而随…

CPU用聚酯多元醇哪家好?哪家品牌行业认可度高?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为化工企业选型提供客观依据,助力精准匹配适配的聚酯多元醇服务伙伴。 TOP1 推荐:江苏华大新材料有限公司 推荐指数:★★★★★ | 口碑评分:国内…

为什么每个Python开发者都该会用venv?,一文讲透虚拟环境的重要性

第一章:为什么你需要关注Python虚拟环境在Python开发中,不同项目往往依赖不同版本的库,甚至同一库的不同版本之间可能存在不兼容问题。若所有项目共享全局Python环境,极易引发依赖冲突,导致程序无法正常运行。使用虚拟…

从入门到精通:3步搞懂pandas中merge与concat的核心区别

第一章:Shell脚本的基本语法和命令Shell脚本是Linux/Unix系统中自动化任务的核心工具,它允许用户通过一系列命令的组合实现复杂操作。编写Shell脚本时,通常以“shebang”开头,用于指定解释器。脚本起始声明 所有Shell脚本应以如下…

Python新手避坑指南:教你正确创建和激活venv避免依赖冲突

第一章:Python虚拟环境的核心作用与依赖管理Python 虚拟环境是现代 Python 开发中不可或缺的工具,它允许开发者为不同项目创建独立的运行环境,避免包版本冲突,确保项目依赖的可复现性。每个虚拟环境拥有独立的 Python 解释器和包安…

2026年背单词软件推荐:基于多维度实测评价,针对个性化与数据安全痛点指南

摘要 在语言学习与个人能力提升的持续热潮中,背单词软件已成为学习者,尤其是学生与职场人士进行高效词汇积累的核心工具。面对市场上功能各异、数量繁多的应用,决策者往往陷入选择困境:如何在满足个性化记忆需求、…

PCB叠层设计的核心技巧-高频阻抗

为什么说 PCB 叠层设计是高速高频阻抗匹配的 “地基”?如果把高速高频 PCB 的阻抗匹配比作一栋房子,那么叠层设计就是地基 —— 地基不稳,后续的走线优化、端接匹配都是空谈。原因很简单:PCB 走线的特征阻抗,必须依赖完…

【必学收藏】小白也能懂的Agentic RAG架构设计与企业实战指南

文章主要介绍了Agentic RAG技术作为传统RAG的演进,通过引入智能体决策机制实现从"被动检索"到"主动智能检索"的跨越。文章详细解析了生产级Agentic RAG的四大核心架构层级(基础设施层、模型集成层、智能体决策层、RAG管道层&#xf…

2026年背单词软件推荐:居家学习场景深度评测,解决遗忘与枯燥痛点并附排名

摘要 在语言学习与个人能力提升的全球化浪潮中,高效掌握词汇已成为学生、职场人士及终身学习者的普遍刚需。然而,面对市场上琳琅满目的词汇记忆工具,决策者往往陷入选择困境:如何在功能繁多的应用中,找到一款真正…

【Flask开发者必备技能】:3步实现高性能RESTful接口设计

第一章:Flask RESTful API设计概述在构建现代Web应用时,RESTful API已成为前后端分离架构中的核心组件。Flask作为一个轻量级Python Web框架,因其简洁性和高度可扩展性,被广泛用于快速开发RESTful服务。通过结合Flask与扩展库如Fl…