打印
[应用相关]

使用STM32G474芯片做Half模式的PWM输出

[复制链接]
4574|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

        有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】

        所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。

        另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。

        关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。

        先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。

        下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。

        这里的比较单元1必须使能,使能即可,无须参数配置。

       

        下面关于TA1/TA2输出的配置,也是必须的关键配置。

       

        至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。

        HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);

        HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);

        HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);

        因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。

        OK,该话题就分享到此,愿君有所获。


使用特权

评论回复
沙发
香水城| | 2021-8-25 11:48 | 只看该作者
谢谢分享,此文有出处。 STM32G4高精度定时器的HALF输出模式示例

使用特权

评论回复
板凳
kiwis66| | 2021-8-25 17:21 | 只看该作者
有了CUBE,我连芯片引脚都懒得去查了~~

使用特权

评论回复
地板
m564522634| | 2021-8-26 08:57 | 只看该作者
kiwis66 发表于 2021-8-25 17:21
有了CUBE,我连芯片引脚都懒得去查了~~

数据手册都不想看了

使用特权

评论回复
5
呐咯密密| | 2021-8-26 09:11 | 只看该作者
m564522634 发表于 2021-8-26 08:57
数据手册都不想看了

不查芯片引脚还说得过去,你这数据手册也不看,真的可以吗

使用特权

评论回复
6
豌豆爹| | 2021-8-27 15:19 | 只看该作者
万能的CUBE

使用特权

评论回复
7
keaibukelian| | 2021-9-10 10:09 | 只看该作者
直接用cube多省事啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

681

主题

1534

帖子

7

粉丝