STMCU小助手
发布时间:2025-10-28 10:59
|
有人研读STM32应用相关技术资料时,见到如下图所示的STM32G474芯片HRTIM的输出波形,好奇是如何实现的。这里简单介绍下实现过程。
对于STM32G474芯片的HRTIM的输出通道,基本的输出操作就三种,分别是SET,RESET和TOGGLE. 所谓SET操作,是指当发生某定时器事件【比方比较事件、周期性事件等】时,定时器单元输出通道输出高电平作为参考信号; RESET操作是指当发生某定时器事件【比方比较事件、周期性事件等】时,定时器单元输出通道输出低电平作为参考信号; 所谓TOGGLE操作呢,是指某定时器事件既作为定时器单元输出通道的SET条件,同时又做该输出通道的RESET条件,那么当该定时器事件发生时,定时器单元输出通道的参考输出信号做电平切换输出,即如果当前电平为高则输出低,反之则输出高; 在STM32G4的参考手册里也有相关描述:
STM32G474芯片的HRTIM的计数器,可以支持向上计数单向模式,也可以支持向上向下双向计数模式。 当我们使用双向计数模式,对某输出通道指定SET或RESET条件时,可以理解为只是针对向上计数方向的,对于向下计数方向,相同的条件表现为与向上计数方向相反的操作。比方说,我们设置当发生CMP1比较事件时让输出通道SET。对于中心对齐计数模式而言,具体表现就是当CMP1事件发生在向上计数方向时,输出高;CMP1事件发生在向下计数方向时则输出低。可以结合上面截图再细看下。 了解了上面HRTIM的基本输出原理,再来看看眼前要实现的输出波形。
这里有两路输出,可以选用HRTIM的MASTER以外的任意定时器单元来实现。下面选用TIMA来实现。从图中可以看到,用到4个比较单元及事件。 对于通道1,发生CMP1和CMP2事件时做SET操作,发生CMP3和CMP4事件时做RESET操作。 对于通道2,发生CMP1事件时做SET操作,发生CMP2、CMP3和CMP4事件时做Toggle输出操作。前面说过,要实现Toggle操作,就是将某事件同时作为输出通道的SET和RESET条件。 好,基本的实现原理就介绍到这里,现在使用STM32CubeMx进行初始化配置。 下面是时基配置,参数多少不重要,最终只是验证输出波形特征。
下面设置4个比较单元比较点的配置。
下面是针对TIMA通道1、通道2的输出配置,重点关注各通道的SET和RESET条件。
基于上面的配置生成初始化工程,添加如下用户代码。用户代码分别是关于启动TIMA计数器和TIMA输出通道波形输出功能的代码。
到此,稍作调试就可以看到最终的输出波形了。输出波形跟开篇的类似,就不截图过来了。因为我这里的参数只是大致选择的,也不知原图的具体参数。 对于初次接触HRTIM的人来讲,即使使用CubeMx配置,也多少有点让人望而生畏,毕竟配置页面东西太多了,不知哪些是必须配置的、哪些是暂时无须关注的。这时可以基于别人例程和演示,多操作几次,慢慢就会找到感觉。这也正是我在此分享之初衷。好,今天的分享演示就到此划上句号。再聊~! |
经验分享 | STM32G0 Stop模式下LPUART唤醒演示
经验分享 | STM32G4系列是否支持位带操作
经验分享 | 一段莫名的延时输出问题
经验分享 | 发不出去的hello问题
基于编码器信号的PWM输出示例
经验分享 | 基于STM32G4芯片TIM+SPI+DMA应用示例
实战经验 | STM32G474勘误手册中SRAM Write Error详解
经验分享 | 读取 STM32H5 Data Flash 触发 NMI 的问题解析
经验分享 | 创建在 PC 上验证 X-Cube-AI 算法的工程
经验分享 | 利用TIMER测量信号周期及占空比的精度话题
微信公众号
手机版