
很多 STM32 系列的 MCU 内置高精度定时器,比方 STM32F334、STM32G4、STM32H7 等系列。利用高精度定时器实现 PWM 输出应该说是最基本的功能了。不过,在实际应用中,常有人觉得无法实现 duty=0: v# T* C4 w$ y% a8 W 或 duty=100%的 PWM 输出情形。这里以 STM32F334 的 HRTIM 为例,简单介绍下利用它实现 PWM 输出的实现原理。 STM32F334 的 HRTIM 的功能框图如下,由一个 MASTER 定时器和 A\B\C\D\E 五个定时器单元组成。其中 A\B\C\D\E 五个定时器单元各可以产生 2 路输出信号,并支持互补输出。6 G: }! G: W& \' t ![]() - w- K: Q. J9 [ l 先看下跟 HRTIM 有关的时钟。& m* k+ e. w9 i' \7 { 它的时钟源可以来自 HSE 而产生的 144MHz 时钟信号,或者来自内部 HSI 而产生的 128MHz 时钟信号,我们把它记作 fHRTIM。下面以时钟源为 144MHz 时钟信号来介绍,它经过高精度定时器内部倍频机构 32 倍频后形成 4.6GMHz 的时钟信号,该时钟信号再经过分频器后就可以作为计数器的计数驱动时钟,我们把它记作 fHRCK。这里的每个定时器单元都有各自的分频器。对于 STM32F334 的 HRTIM,计数模式只支持/ w: y. G# m8 M3 j& {: C 向上计数模式。5 z J- |5 w7 F0 D9 M' B/ @ 在利用 HRTIM 中的定时器单元实现 PWM 输出时,基于不同的分频系数对应着不同的分辨率和最低 PWM频率。如下表所示:【截图来自 STM32F334 的参考手册】 ; v7 e3 \. Y" u7 S) P+ J O& Y6 ` ![]() 显然,不同分频比对应不同的计数时钟 fHRCK,根据计数时钟结合 16 位的计数宽度可求出最长计数时间,亦即最小的 PWM 输出频率。 但对于高精度定时器 HRTIM,由于其自身特定机制的原因,在实现 PWM 功能时,设计比较值和计数周期值时需遵循下面两个原则:【注意是 FHRTIM 时钟单位,即未被倍频的时钟,这里就是那个 144Mhz 时钟】 1、 最小值必须不小于 3 个 fHRTIM 时钟单位; 2、 最大值不得大于 0xFFFE 个 fHRTIM 时钟单位;. U) {2 f3 x4 N 刚才上面说了,HRTIM 里面的定时器单元所用的计数时钟是 fHRTIM 先经过倍频后再经过分频器而来的,那么结合上面的两个原则,不同分频比条件下可以设定的计数周期或比较值的范围就对应到如下表格: # r9 d9 x, \% x; \) n' E4 ?' \ ![]() s* B7 }& s# E$ ~! M( _ 完整版请查看:附件4 V) p' D' k* v; Y4 h6 t 5 W5 j# C @# y( z# d |
STM32高精度定时器PWM输出话题.pdf
下载268.56 KB, 下载次数: 1
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南
ST 微控制器电磁兼容性 (EMC) 设计指南