1. TIM控制器基础解析
TIM(Timer)控制器是嵌入式系统中常见的硬件模块,主要用于计时、脉冲计数和PWM波形生成等场景。在STM32系列微控制器中,TIM模块的功能尤为强大,支持多达17种工作模式。以STM32G070为例,其TIM控制器包含以下核心功能单元:
- 时基单元:由预分频器(PSC)、自动重装载寄存器(ARR)和计数器(CNT)组成,负责基础计时功能
- 输入捕获通道:用于测量外部信号脉宽或频率
- 输出比较通道:生成PWM信号或单脉冲输出
- 编码器接口:直接连接正交编码器
- 从模式控制器:实现定时器级联同步
实际项目中,TIM控制器的时钟配置需要特别注意。以72MHz系统时钟为例,若需要1ms定时,通常设置PSC=71,ARR=999,这样产生的定时中断周期为:(71+1)*(999+1)/72MHz = 1ms
2. 从模式控制器深度剖析
从模式控制器是TIM模块中实现多定时器协同工作的关键部件。其工作原理可类比为"主从指挥系统"——主定时器产生触发信号,从定时器根据配置做出响应动作。常见应用场景包括:
- 同步启动多个定时器:主定时器更新事件触发从定时器启动
- 级联计数:将主定时器的输出作为从定时器的时钟源
- 事件计数:使用外部信号触发从定时器计数
配置示例(STM32 HAL库):
c复制// 主定时器配置
TIM_MasterConfigTypeDef sMasterConfig = {
.MasterOutputTrigger = TIM_TRGO_UPDATE,
.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE
};
HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
// 从定时器配置
TIM_SlaveConfigTypeDef sSlaveConfig = {
.SlaveMode = TIM_SLAVEMODE_TRIGGER,
.InputTrigger = TIM_TS_ITR1 // 对应定时器2的ITR输出
};
HAL_TIM_SlaveConfigSynchronization(&htim3
