1. 定时器介绍

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

2.STM32 定时器的分类

STM32 系列(如 F1、F4、H7 等)的定时器根据功能复杂度可分为以下几类,不同系列的定时器数量和具体功能略有差异,但核心逻辑一致:

类型 典型型号(以 F1 为例) 核心功能 适用场景
基本定时器 TIM6、TIM7 16 位向上计数;仅支持定时中断;可触发 DAC 输出 简单定时(如周期性采样)
通用定时器 TIM2~TIM5、TIM9~TIM14 包含基本定时器所有功能;16/32 位计数(TIM2/TIM5 为 32 位);支持定时、PWM、输入捕获、输出比较、触发 ADC PWM 控制(LED、舵机)、测频
高级定时器 TIM1、TIM8 包含通用定时器所有功能;额外支持互补 PWM、死区控制、刹车功能 电机驱动(如三相电机、步进电机)
系统滴答定时器 SysTick 24 位向下计数;内核自带,简单定时

3、定时器核心工作原理

所有定时器的核心是计数器,通过时钟源驱动计数器递增 / 递减,配合预分频器和自动重装载机制实现精确计时:

 
  1. 时钟源
    定时器的计数时钟可来自内部(如 APB1/APB2 时钟)、外部引脚(如 TIMx_CHx)或其他定时器的触发信号(内部触发)。
    例如:通用定时器默认使用内部时钟(APB1 时钟,F1 系列通常为 72MHz)。

  2. 预分频器(PSC)
    对时钟源进行分频,降低计数频率。公式:计数时钟频率 = 时钟源频率 / (PSC + 1)
    例:72MHz 时钟经 PSC=71 分频后,计数时钟为 1MHz(每 1μs 计数一次)。

  3. 计数器(CNT)
    按计数时钟频率递增 / 递减(基本定时器仅向上计数,高级定时器支持双向计数)。

  4. 自动重装载寄存器(ARR)
    存储计数最大值,当计数器值达到 ARR 时,触发 “更新事件”(可产生中断),并重置计数器(向上计数时)。
    定时时间公式:定时时间 = (ARR + 1) * (PSC + 1) / 时钟源频率
    例:时钟源 72MHz,PSC=71,ARR=999 → 定时时间 = 1000 * 72 / 72,000,000 = 0.001 秒(1ms)。

通用定时器简图:

4.定时器计数模式

5. 定时器溢出时间计算

6. 定时器中断实验配置步骤

7.代码编写(定时器中断点灯)

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐