定时器
STM32 定时器按功能复杂度分三级,另有内核级 SysTick 与独立电池域的 RTC 两个计时源。
分类总览
| 类型 | 代表型号 | 核心能力 | 应用场景 |
|---|---|---|---|
| 基本定时器 | TIM6 / TIM7 | 纯定时/计数(向上计数 + 自动重载),无外部引脚 | 定时中断、触发 DAC、给别的定时器当时基 |
| 通用定时器 | TIM2 | + 输入捕获 / 输出比较 / PWM / 编码器接口 | PWM 输出、测脉宽/频率、读旋转编码器 |
| 高级定时器 | TIM1 / TIM8 | + 互补输出 + 死区 + 刹车 | 电机、三相逆变器、数字电源 |
| SysTick | 内核级(Cortex-M 自带) | 24 位递减计数器 | RTOS 系统心跳(tick) |
| RTC | 独立电池域 | 日历 + 闹钟,低功耗持续计时 | 实时时钟 |
通用定时器三件套
| 功能 | 原理 | 场景 |
|---|---|---|
| PWM 输出 | 输出比较:CNT 与 CCR 比较,到点翻转引脚电平 | 电机转速、LED 亮度 |
| 输入捕获 | 捕获引脚边沿那一刻的 CNT,两次相减得时间差 | 测脉宽、频率、占空比 |
| 编码器接口 | 硬件正交解码:A/B 两相自动计数并判方向 | 旋转编码器读数 |
高级定时器独有
| 功能 | 作用 |
|---|---|
| 互补 PWM + 死区 | 同一路输出 CHx 与反相 CHxN,中间插死区时间,防 H 桥/逆变器上下管同时导通短路 |
| 刹车 (BKIN) | 刹车引脚触发时硬件自动封死 PWM 输出(无需软件干预),用于过流/故障保护 |
SysTick
内核自带(非 STM32 外设),24 位向下计数,计到 0 触发中断并重载。RTOS 用它产生周期节拍,驱动时间片轮转与软件定时器。寄存器在 SCS 系统控制空间,CMSIS 用 SysTick->CTRL / LOAD / VAL 访问。
RTC
挂在 VBAT 电池域,主电源掉电后靠纽扣电池继续走。用 LSE(32.768 kHz)分频出 1 Hz,提供日历、闹钟与低功耗唤醒,适合待机计时。
📎 看门狗(IWDG/WWDG)与 RTOS 上下文切换用的 PendSV 属于异常机制,见 中断笔记。