第六章第一节 TIM 定时中断

一、TIM(Timer) 定时器简介

① 定时器可以对输入的时钟进行计数、并在计数值达到设定值时触发中断**(定时触发中断)**

② 16 位计数器、预分频器、自动重装寄存器的时基单元,在 72MHZ 计数时钟下可以实现最大 59.65s 的定时

③ 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能

④ 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型

STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4

二、基本定时器

1. 定时器核心工作流程

**① 时钟输入:**外部/内部高频率时钟信号输入(如 72MHz)

② 预分频器(PSC):

**(1) 作用:**降低时钟频率

**(2) 公式:**实际频率 = 输入频率 / (PSC + 1)

(3) 示例:

  • PSC = 0 → 2分频(72MHz → 36MHz)
  • PSC = 1 → 3分频(72MHz → 24MHz)

③ 计算器(CNT)

(1) 接收分频后的时钟(CK_CNT)

(2) 自动重装寄存器(ARR)

  • 设定计数器的最大值(如65535)
  • 计数达到此值时:自动重置计算器,触发"更新中断"

**2. 主模式触发 DAC 的功能:**能让内部的硬件在不受程序的控制下实现自动运行

三、通用定时器

1. 时钟源输入:

**① 内部时钟(CK_INT):**由 RCC 提供的 TIMxCLK 经系统总线驱动,为定时器默认计数基准,稳定且可控。

② 外部触发(ETR): 支持外部引脚输入,可配置极性(上升 / 下降沿)、滤波(消抖)、预分频,适配外部异步信号(如编码器、脉冲触发)

③ 内部触发

2. 捕获 / 比较通道(CC1 - CC4)

① 输入捕获模式:

(1) 流程: 通道引脚(TIMx_CHx)信号经滤波、边沿检测后、触发 CNT 值锁存至捕获 / 比较寄存器(CCR),用于**频率测量(周期差法)、脉宽测量(上升沿 → 下降沿时间差),**适配红外解码、编码器测速等场景。

**(2) 预分频与滤波:**支持通道级信号调理,消抖并控制捕获触发频率(如每 2 个边沿触发一次捕获),提升抗干扰能力。

② 输出比较模式:

(1) 原理: CNT 与 CCR 值实时比较,触发输出控制模块翻转电平、置位 / 复位,生成PWM 波形(占空比 = CCR/ARR)、电平翻转信号,直接驱动电机、LED 等外设

**(2) 极性与使能:**可配置输出高 / 低有效,独立使能通道输出,灵活构建多路 PWM(如电机三相驱动)

四、时序

1. 预分频器时序

① 预分频缓冲器:

(1) 预分频缓冲器主要用于**暂存分频器的有效配置参数,避免在写入新参数时,立即改变预分频器的工作状态,导致计数器工作出现紊乱。**它保证了预分频器在参数更新时,能够按照一定的时序稳定切换工作模式,确保整个定时器系统稳定、有序地运行。

(2) 工作过程:

  • 初始状态: 假设一开始预分频控制寄存器的值为 PSC = 1,预分频缓冲器也加载了这个值,此时预分频器按照 CK_CNT = CK_PSC / (1+1) 的规则,对输入时钟 CK_PSC 进行分频,输出定时器时钟 CK_CNT,计数器在 CNT_EN 使能的情况下,按照这个分频后的时钟频率进行计数。
  • 写入新参数 :当向预分频控制寄存器写入新的参数值(比如 PSC = 2)时,新值并不会立即生效,而是先被存储在预分频控制寄存器中。 这时候,预分频缓冲器依然保持原来的参数值(PSC = 1),继续按照原有的分频规则输出 CK_CNT,保证计数器能够继续稳定地工作,不会因为新参数的写入而立即改变工作节奏。
  • 更新事件触发 : 当计数器的计数值达到自动重装载值(ARR)并产生溢出,从而触发更新事件(UEV)时,预分频缓冲器才会从预分频控制寄存器中加载新的参数值(PSC = 2 )。加载完成后,预分频器开始按照新的分频规则 CK_CNT = CK_PSC / (2 + 1) 对输入时钟 CK_PSC 进行分频,输出新频率的定时器时钟 CK_CNT ,计数器也随之按照新的时钟频率进行计数。

2. 计数器时序

① 中断标志

(1) 定义与本质: 中断标志是硬件在特定事件发生时,向软件主动发起通知的 "状态标记" ,存储于定时器状态寄存器中(如 TIMx_SR 的 UIF 位 )。本质是硬件与软件交互的 "信号桥梁",标志特定事件(如计数器溢出)已发生,需软件响应。

(2) 触发机制: 当定时器满足预设条件(如计数器从自动重装值 ARR 溢出归 0 ),硬件自动将中断标志位(UIF)置 1。

(3) 关键特性:手动清零

  • 自动保持性:UIF 置 1 后,会持续保持高电平,不会自动归 0 。若不手动清除,会导致:重复触发中断
  • 清零方式 :软件通过写操作清除

五、时钟树

1. 关键 "特殊规则" :

① APB 分频的 "倍频补偿"

如果 APB 总线分频器(如 APB1 分频 /2 ),定时器时钟(TIMxCLK)会自动 ×2

→ 例:HCLK=72MHz,APB1 分频 /2 → APB1 总线时钟是 36MHz,但定时器时钟是 72MHz(保证定时精度)。

② 低速时钟的独立用途:

(1) LSE: 专给 RTC 实时时钟,断电也能走(靠电池),实现 "日历 / 闹钟" 功能。

(2) LSI:独立看门狗(IWDG),无需主时钟也能工作(防止程序跑飞)。

相关推荐
崇山峻岭之间12 分钟前
单片机基本定时器实验
单片机·嵌入式硬件
DS小龙哥25 分钟前
基于ESP32设计的智能养蜂监测系统
stm32·单片机·嵌入式硬件·物联网·华为云
夜月yeyue1 小时前
STM32 DMA 双缓冲采样
linux·stm32·单片机·嵌入式硬件·系统架构
西城微科方案开发1 小时前
SIC8P370D2L-PLP16 8位OTP单片机 低功耗多功能MCU详解
单片机·嵌入式硬件
踏着七彩祥云的小丑4 小时前
嵌入式测试第 32 天:升级测试:固件OTA升级、断点续传、回滚测试
单片机·嵌入式硬件·学习
点灯小铭4 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
数据库·单片机·mongodb·毕业设计·课程设计·期末大作业
sramdram4 小时前
基于MCU微控制器的电子血压计应用解决方案
单片机·嵌入式硬件·mcu·mcu微控制器
Szime4 小时前
AD9218 国产替代方向:双通道 10 位 105MSPS ADC 选型支持
单片机·嵌入式硬件·fpga开发·汽车
凡人叶枫5 小时前
Effective C++ 条款15:在资源管理类中提供对原始资源的访问
linux·开发语言·c++·stm32·单片机
数智工坊5 小时前
机器人控制总线深度解析:CAN与EtherCAT,谁在决定机器人的稳定性?
嵌入式硬件·学习·机器人