1. 定时中断技术概述
在嵌入式系统和实时控制领域,定时中断(TIM)是实现精准时间控制的核心机制。我十年前第一次在STM32项目中使用定时中断时,就被它的精确性和可靠性所震撼。简单来说,定时中断就像是个永不疲倦的哨兵,每隔固定时间就会"敲一下钟",提醒CPU该处理特定任务了。
现代微控制器中的定时器模块通常包含:
- 16/32位向上/向下计数器
- 可编程预分频器
- 自动重装载寄存器
- 多种触发模式选择
以常见的72MHz主频MCU为例,通过合理配置预分频器和重装载值,可以实现从微秒到小时的精确定时。这种硬件级定时相比软件延时循环,不仅精度更高(误差通常小于0.1%),还不会占用CPU资源。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 定时中断代码架构设计
2.1 硬件初始化配置
以STM32标准外设库为例,基础初始化流程如下:
c复制void TIM_Config(void) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
// 使能TIM2时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
// 基础参数配置
TIM_TimeBaseStructure.TIM_Period = 999; // 自动重装载值
TIM_TimeBaseStructure.TIM_Prescaler = 7199; // 预分频系数
TIM_TimeBaseStructure.TIM_ClockDivision = 0; // 时钟分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
// 使能更新中断
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
// 启动定时器
TIM_Cmd(TIM2, ENABLE);
}
关键参数计算示例:
- 系统时钟72
