16.4 HRTIM项目:高精度PWM波
# 16.4 HRTIM项目:高精度PWM波
本实验通过STM32F334的高精度定时器(HRTIM)生成100kHz/50%占空比的PWM波,对比STM32F103通用定时器的性能差异,验证HRTIM的超高分辨率特性。
# 下载源码 点击查看PDF文档
# 16.4.1 STM32CubeMX配置
下面介绍STM32F334的HRTIM在STM32CubeMX中的配置过程。
# 1. 建立新工程
① 建立一个新的STM32工程;
② 选择芯片“STM32F334C8T6”;
③ 设置工程的名称为“16 HRTIM”;
④ 选择SWD调试方式;
# 2.系统时钟配置
设置高速外部时钟HSE作为时钟源。
- 点击“Pinout & Configuration”进入到引脚配置标签页
- 在左侧的导航栏中点击选择“System Core”
- 双击“RCC”进入到RCC复位和时钟控制器的配置界面
- 将High-Speed Clock (HSE)设置下拉选择“Crystal/Ceramic Resonator”,将外部快速时钟使能。
设置时钟频率
① 点击“Clock Configuration”进入到时钟配置标签页;
② 在HCLK(MHz)输入栏中输入72从而将系统主频设置为72 MHz;
③ 将HRTIM时钟设置为144 MHz。为HRTIM提供较高的时钟频率从而实现较高的分辨率。

# 3. HRTIM配置
① 点击进入“Pinout & Configuration”标签页;
② 在左侧导航栏中点击“Timers”;
③ 双击“HRTIM1”高精度定时器
④ 将定时器A设置为“TA1 output active”,从而启用定时器A。

将高精度定时器A的通用配置和时基配置的参数配置如下:
- 基本/高级配置:高级
- 预分频系数(Prescaler Ratio):32倍频
- 周期寄存器值(Period):46080,从而将TA1的波形设置为100KHz

配置比较寄存器1,将比较寄存器1启用然后将数值设为周期寄存器的一半:23040,从而产生50%的占空比。

配置TA1的输出级:
- 配置动作状态极性(Polarity):高电平
- 置位源数量:1
- 置位源:比较寄存器1事件
- 复位源数量:1
- 复位源:计数器翻转事件

# 4. 生成代码
# 勾选生成单独外设文件,保存生成工程代码。
# 16.4.2 HRTIM项目软件设计
# 1. 启动HRTIM输出
在STM32CubeMX生成的main.c中插入代码HAL_HRTIM_WaveformOutputStart(&hhrtim, HRTIM_TIMERINDEX_TIMER_A, HRTIM_OUTPUT_TA1)使能TA1引脚PWM输出,调用HAL_HRTIM_WaveformCountStart(&hhrtim, HRTIM_TIMERINDEX_TIMER_A)启动定时器A计数,配合CubeMX预设的ARR/Compare参数即可在TA1引脚输出100kHz/50%占空比PWM波形。
在main.c
中添加以下代码,启动PWM输出:
/* USER CODE BEGIN 2 */
HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);
HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
/* USER CODE END 2 */
2
3
4
# 2. 动态调整占空比
在STM32F334的main.c主循环中动态修改HRTIM比较寄存器CMP1xR(如HRTIM_TIMx->CMP1xR = 23040与23041交替写入),通过±1步进触发PWM边沿以217ps精度偏移,配合HRTIM高分辨率时钟源验证波形跳变时刻的微调能力,实时观测示波器确认最小时间分辨率特性,直接体现寄存器级操作对PWM输出的精准控制。
while(1) {
hhrtim1.Instance->sTimerxRegs[0].CMP1xR = 23040; // 占空比50%
hhrtim1.Instance->sTimerxRegs[0].CMP1xR = 23041; // 最小步长+1
}
2
3
4
# 3. 生成代码
勾选生成单独外设文件,保存生成工程代码。
# 16.4.3 HRTIM项目下载验证
# 1. 静态精度测试
将动态调整占空比的代码进行屏蔽,确保PWM输出为静态50%占空比。
STM32F103的输出波形如下图所示,实测频率值为99.86kHz(误差-0.14%),实测占空比为49.92%(误差-0.08%)。

STM32F334的输出波形如下图所示,实测频率值精确为100.0kHz,实测占空比精确为50.00%,波形特征边沿陡峭。

# 2. 动态分辨率测试
取消占空比调整代码的屏蔽,以最小步长(±1)快速交替修改比较寄存器值。
STM32F103的最小分辨率波形如下图所示,设置示波器的水平时基为10ns/div,示波器观测到下降沿位置出现明显双线残影,残影宽度为2.2ns,与理论最小步长一致。

通过动态调整占空比并观测示波器残影,STM32F334的HRTIM展现了217ps级超高分辨率,其残影宽度仅为STM32F103的1/10。实验结果直观证明了HRTIM在精密数字电源等场景中的优越性。通过这一实验对比深化了对定时器分辨率的理解。
