有些应用场合,我们需要使用多个定时器主从级联,然后让各个定时器同时启动并做同频同相的PWM波形输出。要完成这个功能,有时发现实现起来似乎并没有那么顺畅,这里基于STM32F1系列芯片做个配置示例。之所以选择STM32F1芯片主要是考虑到有部分人使用STM32F1芯片并基于标准库做开发,那么,我这里就Cube库和标准库给出两套相关主从配置的示例代码,供有需要的人参考。
在调试验证过程中我选择STM32F103 Nucleo板,主芯片为STM32F103RB.将片内定时器TIM1/TIM2/TIM3/TIM4四个定时器主从首尾相连,同时启动并要求四个定时器输出同频同相信号。
先查看STM32F1参考手册相关章节【这个环节是必不可少的】,各类定时器从模式控制寄存器描述部分往往有定时器内部触发连接表格。我们要看的是下面这个表格:
结合上面定时器内部触发连接表格,让四个定时器建立如下主从级联关系。
基本原理是这样的【实际上是结合上图看图说话】:
TIM1工作在主模式,TIM4工作在从模式,TIM2和TIM3处于双角色,既做主又做从。其中TIM2/TIM3/TIM4的从模式都配置在触发从模式,即Trigger Slave Mode.
TIM1的定时器使能操作作为触发输出[TRGO]触发TIM2并使能TIM2的计数器,同时TIM2的定时器使能操作又作为触发输出信号连接到TIM3,并触发TIM3的定时器启动。同样,TIM3的定时器使能信号又作为TIM4的触发信号,连接到TIM4的内部触发输入端,触发启动TIM4. 在所有定时器使用相同时钟源、相同时基参数配置的前提下,同时输出多路完美同频同相的PWM波形,像下面的样子。【我为了截图方便,图形来自于IDE的逻辑分析仪模拟效果】
这里的配置要点,就是软件只需使能TIM1的计数器,其它定时器的计数器靠触发信号启动并保持同步计数。这里只用到定时器的使能信号作为触发输出[TRGO]并连到下一级从模式定时器。当然可以作为触发输出的信号很多,读者可以进一步查看相关资料。
一、基于stm32F1标准库的跟定时器主从配置相关代码如下【关于时基配置和PWM输出配置这里就没放进来了。重点关注这几个定时器的主从配置】:
我们在添加用户应用代码时,要注意的一点就是TIM2/TIM3/TIM4的计数器不必、也不可手动启动,我们只需手动使能TIM1计数器的工作就好,并开启各ARR/CCR寄存器的预取功能。
二、上面是基于STM32F1标准库有关定时器主从配置的参考配置代码,如果是基于CubeMx配置工具来配置的话,参照下面配置操作后即可生成相关配置代码。【主从配置关注红色方框内的配置】
TIM1的相关主从配置:
TIM2的相关主从配置:
TIM3的相关主从配置:
TIM4的相关主从配置:
同样,在用户代码里只需开启TIM2/TIM3/TIM4的相关PWM输出功能,不要软件使能它们三个定时器的计数器。配置好TIM1的PWM输出功能后,只需软件使能TIM1的计数器,令其产生触发输出,让4个定时器同步计数并做PWM输出。
关于上面4个定时器实现同频同相输出的主从配置主要就这些内容,用户程序里只需使能第一个主定时器的计数器工作,其它定时器的工作全靠触发从模式触发启动。另外,在启动第一个主定时器的时候,其它从定时器一定都已经配置好了,也就是说要注意用户代码中的那几行代码的先后顺序。总之,保证一点,在启动定时器时所有定时器的初始化工作都要已经完成,不能启动后才去做初始化,不然会导致计数和输出不同步。
其实,即使使用CubeMx进行配置,也会面临各种从模式的选择问题,关于各种定时器从模式的特征和用法,以及定时器触发信号内容请自行查看手册或相关资料进一步阅读了解,带着问题去查看资料会更有效率些。
关键字:定时器 同步输出 详细配置
引用地址:
如何进行多个定时器主从级联同步输出详细配置示例说明
推荐阅读最新更新时间:2024-10-24 21:18
如何进行多个定时器主从级联同步输出详细配置示例说明
有些应用场合,我们需要使用多个定时器主从级联,然后让各个定时器同时启动并做同频同相的PWM波形输出。要完成这个功能,有时发现实现起来似乎并没有那么顺畅,这里基于STM32F1系列芯片做个配置示例。之所以选择STM32F1芯片主要是考虑到有部分人使用STM32F1芯片并基于标准库做开发,那么,我这里就Cube库和标准库给出两套相关主从配置的示例代码,供有需要的人参考。 在调试验证过程中我选择STM32F103 Nucleo板,主芯片为STM32F103RB.将片内定时器TIM1/TIM2/TIM3/TIM4四个定时器主从首尾相连,同时启动并要求四个定时器输出同频同相信号。 先查看STM32F1参考手册相关章节【这个环节是必不
[单片机]
STM32F103ZET6 用定时器级联方式输出特定数目的PWM
STM32F103ZET6里共有8个定时器,其中高级定时器有TIM1-TIM5、TIM8,共6个。 这里需要使用定时器的级联功能,ST的RM0008 REV12的P388和P399页上有说明对于特定的定时器,怎么去选择级联功能,参见表86。 我这里输出PWM的定时器是TIM2,空闲的定时器是TIM3。以TIM2为主定时器,TIM3为从定时器对TIM2的输出脉冲数进行计数。 查表可知,TIM3为从定时器选择TIM2为触发源,需要配置TS=001,即选择ITR1。 实现通过定时器控制输出PWM个数的功能,可以有如下一种配置方式: void TIM2_Master__TIM3_Slave_Configuration(u32 Puls
[单片机]
关于高速单片机STM32H7定时器同步启动并输出多路PWM波形的探究
随着嵌入式系统技术的不断发展,PWM(Pulse Width Modulation)信号在各种应用场景中得到了广泛应用,例如电机控制、LED灯控、音频处理等方面。在多个PWM信号同时输出时,为了保证信号的同步性和稳定性,定时器同步启动技术成为了必要的手段。 STM32系列芯片以其高性能和多功能外设而广受业界认可。其中,STM32H7系列芯片配备了丰富的定时器模块,既具备通用性又具备高性能,支持多种工作模式,可以满足多种嵌入式应用对高精度、多信号输出的需求。 本文基于STM32H7芯片,研究了定时器同步启动技术在PWM信号多路输出中的应用。我们在通过研究相关技术的基础上,提出了一种基于定时器同步启动的PWM输出方案,并通过实
[单片机]
STM32F407 基本定时器配置输出PWM方波
介绍STM32F407定时器PWM波形输出配置方式。 通过逻辑分析采集波形数据进行可视化显示对比。 【1】定时器PWM功能介绍 STM32F4 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达4路的PWM输出! 【2】PWM波形输出通道介绍 ** 定时器3的硬件PWM通道:PA6 PA7 PB0 PB1** 下面截图是介绍定时器3通道的复用IO口模式配置方式 【3】配置PWM波形输出代码示例 在工程中增加pwm.c文件,写入以下代码 #include pwm.h
[单片机]
STM32F407入门开发: 配置定时器输出PWM方波
第一章 定时器PWM功能介绍 STM32F407的定时器的 TIM6 和 TIM7 是普通定时器,除此之外,其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达4路的PWM输出;在开发四轴无人机、机器人等需要控制大量电机的产品里运用起来非常方便。 第二章 PWM波形输出通道介绍 定时器3的硬件PWM通道:PA6 PA7 PB0 PB1 下面截图是介绍定时器3通道的复用IO口模式配置方式 第三章 配置PWM波形输出代码示例 3.1 在工程中增加pwm.c文件,写入以下代码 #include pwm.h
[单片机]
STM32F0xx_ DAC输出电压配置详细过程
前言 数模转换DAC的功能在现实应用中所占的分量,相对定时器TIM、串口USART等要小的多,这也是ST为什么内部集成DAC模块相对来说不是那么多的原因。但在有需要使用数模转换功能的项目中,自带的这个DAC模块基本上可以取代外挂一片DAC芯片,因为自带的这个模块功能也很强大,只需要简单的配置一下就可以输出指定的电压信号(如:PWM波形、三角波、正选波),中途无需要软件干预。当然,今天提供的软件工程只有输出电压的基本操作,没有输出特殊的波形。但是,当你了解输出电压的原理之后,以后你想输出这些特殊的波形,也就容易多了。 STM32F0系列的DAC功能大部分是单通道,相对比较简单。只有STM32F072系列芯片是两路输出通道、有DA
[单片机]
STM32F0xx_ TIM输出PWM配置详细过程
前言 前面我说过STM32的定时器功能很强大,今天就来总结一下它的另外一个“强大”功能:TIM的比较输出功能,输出可调PWM波形。直接调用函数接口“TIM2_CH1_PWM(uint32_t Freq, uint16_t Dutycycle)”传入频率和占空比就能输出指定的波形。 我提供的软件工程直接调用是比较简单就能实现想要的PWM波形。但是,如果你是学习者,建议还是进去函数把每一个细节了解清楚,里面的东西可能对你掌握TIM很有帮助。 文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。 ST标准外设库和参考手册、数据手册等都可以在ST
[单片机]
STM32F0xx_DAC输出电压配置详细过程
前言 数模转换DAC的功能在现实应用中所占的分量,相对定时器TIM、串口USART等要小的多,这也是ST为什么内部集成DAC模块相对来说不是那么多的原因。但在有需要使用数模转换功能的项目中,自带的这个DAC模块基本上可以取代外挂一片DAC芯片,因为自带的这个模块功能也很强大,只需要简单的配置一下就可以输出指定的电压信号(如:PWM波形、三角波、正选波),中途无需要软件干预。当然,今天提供的软件工程只有输出电压的基本操作,没有输出特殊的波形。但是,当你了解输出电压的原理之后,以后你想输出这些特殊的波形,也就容易多了。 STM32F0系列的DAC功能大部分是单通道,相对比较简单。只有STM32F072系列芯片是两路输出通道、有DA
[单片机]