arm嵌入式开发及应用 G4 PWM arm

2025-01-0218:13:19创业资讯1

STM32系列的MCU,如STM32F334、STM32G4、STM32H7等,内置了高精度定时器,实现PWM输出是其基本功能之一。在实际应用中,有些开发者可能会遇到无法实现占空比为0或100%的PWM输出的情况。下面以STM32F334的HRTIM为例,简要介绍如何利用它实现PWM输出。

STM32F334的HRTIM功能框图包括一个MASTER定时器和A、B、C、D、E五个定时器单元。每个定时器单元都可以产生两路输出信号,并支持互补输出。

在HRTIM中,不同的分频系数对应着不同的分辨率和最低频率。这可以在STM32F334的参考手册中的表格中查找到。

由于HRTIM的特殊机制,在实现PWM功能时,设计比较值和计数周期值需遵循特定原则。最小值必须不小于三个HRTIM时钟单位;最大值不得大于0xFFFE个HRTIM时钟单位。

这里要澄清一个误区。有人误以为由于上述原则,无法实现PWM输出的0占空比或100%占空比。但实际上,这是对HRTIM工作原理的误解。

以一个具体的例子来说明。假设我们需要一个PWM周期值刚好为0xff00,那么比较寄存器CMP的值可以在0x000c到0xff00之间任意设置,并能够实现有效、可靠的比较。这意味着,即使CMP值设置得很小,也不会影响PWM输出的0占空比情况。

对于HRTIM的输出,计数器的值与比较寄存器的值发生相等匹配事件时,会进行SET或RESET输出。当CMP的值增加到刚好等于PER的值时,由于比较事件的响应优先级高于周期件,输出将按照比较事件来定,此时对应着Duty=0的情形。

要实现Duty=100%的输出,我们只需将CMP的值设置成任意大于PER的值。这样,由于CMP值始终不等于PER值,不会发生有效的比较匹配事件,因此输出将始终由PER事件掌控。

了解了HRTIM实现PWM输出的原理后,我们就可以更灵活地编写代码了。更多细节还需要仔细阅读手册,比如定时器事件及事件响应竞争时的仲裁等。

  • 版权说明:
  • 本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 295052769@qq.com 举报,一经查实,本站将立刻删除。