1. STM32定时器基础与PWM信号概述
在嵌入式开发领域,STM32的定时器模块堪称瑞士军刀般的存在。作为一位长期使用STM32进行工业控制开发的工程师,我深刻体会到定时器功能的重要性。特别是输出比较和PWM生成功能,在电机控制、LED调光、舵机驱动等场景中几乎无处不在。
定时器的输出比较功能允许我们在特定时刻触发电平变化,而PWM(脉冲宽度调制)则是通过调节脉冲的占空比来实现模拟量控制的技术。以常见的无刷电机控制为例,三个相位需要精确的PWM信号配合,此时定时器的输出比较功能就派上了大用场。
提示:STM32的定时器资源在不同系列中差异较大,例如F1系列通常有基本定时器、通用定时器和高级定时器,而H7系列则功能更加强大。开发前务必查阅对应型号的参考手册。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 定时器输出比较原理深度解析
2.1 定时器核心寄存器剖析
理解输出比较功能的关键在于掌握几个核心寄存器的工作原理:
- 计数器寄存器(TIMx_CNT):这是定时器的核心,以设定的频率递增或递减
- 自动重装载寄存器(TIMx_ARR):决定计数器的周期上限
- 捕获/比较寄存器(TIMx_CCRx):用于存储比较值
- 捕获/比较模式寄存器(TIMx_CCMRx):配置输出比较模式
- 捕获/比较使能寄存器(TIMx_CCER):控制输出使能状态
当CNT的值与CCRx的值匹配时,根据CCMRx的配置,可以触发以下动作:
- 输出引脚电平翻转
- 将引脚设置为高电平或低电平
- 产生中断请求
- 触发DMA传输
2.2 输出比较模式详解
STM32的定时器通常支持多种输出比较模式:
- 冻结模式:匹配时不采取任何动作
- 激活模式:匹配时将输出置为有效电平
- 非激活模式:匹配时将输出置为无效电平
- 翻转模式:匹配时翻转输出电平
- 强制模式:软件强制输出高或低电平
- PWM模式:生成PWM波形
在HAL库中,这些模式通过TIM_OCMode枚举类型来配置。例如,PWM模式1和模式2的区别在于输出电平的极性定义。
3. PWM信号生成实战配置
3.1 硬件环境准备
以STM32F407 Discovery开发板
