关于高速单片机STM32H7定时器同步启动并输出多路PWM波形的探究

发布者:GoldenHarmony最新更新时间:2024-05-27 来源: elecfans关键字:高速单片机  STM32H7 手机看文章 扫描二维码
随时随地手机看文章

随着嵌入式系统技术的不断发展,PWM(Pulse Width Modulation)信号在各种应用场景中得到了广泛应用,例如电机控制、LED灯控、音频处理等方面。在多个PWM信号同时输出时,为了保证信号的同步性和稳定性,定时器同步启动技术成为了必要的手段。


STM32系列芯片以其高性能和多功能外设而广受业界认可。其中,STM32H7系列芯片配备了丰富的定时器模块,既具备通用性又具备高性能,支持多种工作模式,可以满足多种嵌入式应用对高精度、多信号输出的需求。


本文基于STM32H7芯片,研究了定时器同步启动技术在PWM信号多路输出中的应用。我们在通过研究相关技术的基础上,提出了一种基于定时器同步启动的PWM输出方案,并通过实验验证了该方案的稳定性和实用性。


本文旨在探究嵌入式系统中PWM信号同步输出问题的解决方案,为有类似需求的嵌入式开发人员提供参考和借鉴,希望本文对开发者在设计多路PWM输出应用时提供一些实用价值和借鉴意义。


STM32H723ZGT6所有定时器包括两个高级控制定时器、十二个通用定时器、两个基本定时器、五个低功耗定时器、两个看门狗定时器和一个SysTick定时器。所有计时器计数器都可以在Debug模式下冻结。


本次实验主频配置的是500MHz,共使用过了TIM1、 TIM2、TIM3、TIM23、TIM24共五个定时器,其中TIM1为主定时器,用于控制其他定时器的同步启动,其他定时器为从定时器,用于输出PWM波形。


-01-

通用定时器框图

图片

-02-

定时器特性比较

图片

-03-

定时器内部触发连接关系

图片

-04-

原理方案以及开发流程

4.1 原理方案

通过配置主从定时器内部触发连接功能,以达到启动主定时器时,其他从定时器同步启动的功能。

4.2 通过STM32CubeMX

配置定时器工作模式

4.2.1 配置主定时器

图片

4.2.2 配置从定时器

图片

4.2.3 配置PWM输出引脚功能

图片

-05-

修改代码并验证功能

5.1 修改代码

图片

此HAL库接口每次只能初始化一个其中一个TIM的通道并开启PWM,但判断不了是否由主定时器TIM1来控制同步启动的,所以需要对其函数进行修改。

如下:

图片

图片

int main(void) 函数内容

5.2 用示波器逻辑分析功能验证结果

图片

5.3 验证抖动范围不超过3ns

图片

-06-

结论

综上所述,使用STM32H7的同步启动定时器可有效降低多个定时器之间的相位误差,提高系统的定时精度。通过TIM定时器主从模式功能,实现了定时器的同步启动,并且实现了周期、占空比和相位的精确控制。实验结果表明,该方案可以在多种应用场景下提高系统稳定性和可靠性。

总之,本文设计的STM32H7同步启动定时器方案具有较高的实用价值和应用前景,对于各种基于定时器的控制应用都具有一定的参考价值。


关键字:高速单片机  STM32H7 引用地址:关于高速单片机STM32H7定时器同步启动并输出多路PWM波形的探究

上一篇:基于STM32CUBEMX驱动TMOS模块STHS34PF80(3)----修改检测阈值
下一篇:机智云物联网平台+STM32的10kV智能箱式变电站设计

推荐阅读最新更新时间:2026-03-25 16:45

STM32H7的CACHE、RAM、MPU直接的联系以及如何使用
前言 本文主要讲解STM32H7系列的CACHE是如何使用的,以及能给程序带来怎样的提升,还有过程中遇到的问题以及解决方法。 一、启用CACHE 启用cache很简单,就是这两句,分别打开I-Cache和D-Cache,但是如果只使用这两句,再操作DMA和FLASH时就很有可能遇到问题,后面会具体说明。 SCB_EnableICache();//使能I-Cache SCB_EnableDCache();//使能D-Cache 二、使用MPU CACHE和MPU一般都是要结合在一起使用的,因为MPU可以保护对RAM的访问。 下面是一个RAM的MPU保护配置。 /* Disables the MPU */ HAL_M
[单片机]
<font color='red'>STM32H7</font>的CACHE、RAM、MPU直接的联系以及如何使用
基于STM32H7 UART空闲事件及DMA传输示例
有人使用STM32H7芯片的UART,想利用DMA实现不定长的数据接收,实现过程似乎不太顺利。另外,刚好最近有人使用H7芯片做UART收发,当开启D-Cache未做MPU配置,使用指令对D-Cache做相应失效处理,发现通信结果异常。我这里简单演示下实现过程,分使用和不使用D-Cache两种做法,以供参考。 这里使用UART4做发送,UART5做接收,都使用DMA,均工作在Normal模式。 在主循环里每隔一定时间让UART4发送一串数据出去,一共3串依次发送。每次发送的数据长度不一样,但不会超过20个字符。 让UART5基于DMA做不定长的数据接收,将接收长度定义在20。同时开启UART5的空闲中断。在UART5的
[单片机]
基于<font color='red'>STM32H7</font> UART空闲事件及DMA传输示例
工程师笔记|STM32H7双核CM4作为Master初始化系统
STM32H7双核单片机内部集成了CM7和CM4这两个内核,在目前官方提供的例程中,大都是使用CM7作为Master初始化系统时钟,然后通过释放硬件信号量HSEM唤醒CM4,那么是否可以将CM7与CM4的角色互换,让CM4作为Master去初始化系统时钟呢? 答案肯定是可以的 可行的方案分析 方案一 目前官方提供的例程路径如下,可以使得D2域的CM4进行系统时钟的初始化: ……STM32CubeRepositorySTM32Cube_FW_H7_V1.9.0ProjectsSTM32H747I-EVALExamplesPWRPWR_D2ON_D1OFFEWARM 但是通过查看对应项目工程的readme.txt文件,发现:
[单片机]
【安富莱STM32H7教程】第1章 初学STM32H7的准备工作
1.1 初学者重要提示 1、 关于学习方法问题,可以看附件章节A。 2、 学会 STM32H7相关资源的获取方法,做到心中有数,否则心里老是没底。 3、 关于MDK和IAR两种编译器,推荐都掌握,以其中一个为主,另一个为辅。因为很多时候我们需要参考的工程代码不是自己熟悉的编译器,就会很被动。 4、 相对于F1、F4系列,H7最大的区别的还是MPU和Cache的配置,这两个配置会贯穿整个教程为大家做讲解,而外设的学习大同小异。 5、 H7携带了DTCM和ITCM,ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上的其它RAM主频都是200MHz,所以要充分发挥TCM的性能。
[单片机]
【安富莱<font color='red'>STM32H7</font>教程】第1章 初学<font color='red'>STM32H7</font>的准备工作
STM32H7教程】第5章 STM32H7下载和调试方法(MDK5)
5.1 初学者重要提示 如果使用JLINK调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持。 如果使用STLINK调试下载STM32H7,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。 MDK曾发布的STM32F1,F407,F429和F7的所有调试方法的设置细节及其注意事项,同样适用于STM32H7:http://forum.armfly.com/forum.php?mod=viewthread&tid=14896 。 MDK5调试过程中容易崩溃的问题,请看本章5.4小节,比较重要。 JLINK无法下载解决思路以及常见问题整理,适用于其它LINK:http://for
[单片机]
【<font color='red'>STM32H7</font>教程】第5章 <font color='red'>STM32H7</font>下载和调试方法(MDK5)
STM32H7教程】第7章 STM32H7下载和调试方法(IAR8)
7.1 初学者重要提示 如果使用JLINK调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持。 如果使用STLINK调试下载STM32H7,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。 http://forum.armfly.com/forum.php?mod=viewthread&tid=21708 。 7.2 使用IAR调试和下载程序设置(JLINK) 调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持,JLINK的驱动安装等相关文件已经在本教程第2章的2.5章节有说明。 在上个章节里面,我们已经将Options对话框里面大
[单片机]
【<font color='red'>STM32H7</font>教程】第7章 <font color='red'>STM32H7</font>下载和调试方法(IAR8)
STM32H7教程】第10章 STM32H7的FLASH,RAM和栈使用情况
10.1 初学者重要提示 1、为了更好的学习本章知识点,可以看之前做的视频教程第11章,针对H7也将在今年发布视频教程: http://forum.armfly.com/forum.php?mod=viewthread&tid=15408 。 2、本章节以MDK为例进行说明,使用IAR同理。 10.2 MAP文件分析 通过map文件,可以方便的查看工程ROM/FLASH和RAM的占用情况,包括单个源文件,甚至具体到每个函数的rom大小都给出了,通过这些信息可以很好的进行代码优化。MAP文件的内容可分为如下几部分: Section Cross References Removing Unused input se
[单片机]
【<font color='red'>STM32H7</font>教程】第10章 <font color='red'>STM32H7</font>的FLASH,RAM和栈使用情况
STM32H7教程】第11章 STM32H7移植SEGGER的硬件异常分析
11.1 初学者重要提示 MDK本身也是支持硬件异常分析的,就是不够直观,此贴是MDK的硬件异常分析文档: http://forum.armfly.com/forum.php?mod=viewthread&tid=21940 。 IAR8带的硬件异常分析比较好用,在本章11.6小节有说明。 11.2 移植方法 直接移植SEGGER的硬件异常代码会有错误警告,这里针对IAR和MDK版本做了些简单修改,方便大家移植到自己的工程里面。 MDK版本移植 源文件位于本章配套例子的UserseggerHardFaultHandlerMDK文件夹,添加如下两个文件到工程里面即可。 IAR版本移植 源文件位于本章配套例子
[单片机]
【<font color='red'>STM32H7</font>教程】第11章 <font color='red'>STM32H7</font>移植SEGGER的硬件异常分析
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved