0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何进行多个定时器主从级联同步输出详细配置示例说明

茶话MCU 来源:未知 2019-02-03 12:27 次阅读

有些应用场合,我们需要使用多个定时器主从级联,然后让各个定时器同时启动并做同频同相的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的逻辑分析仪interwetten与威廉的赔率体系 效果】

这里的配置要点,就是软件只需使能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进行配置,也会面临各种从模式的选择问题,关于各种定时器从模式的特征和用法,以及定时器触发信号内容请自行查看手册或相关资料进一步阅读了解,带着问题去查看资料会更有效率些。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5186

    浏览量

    213830
  • STM32
    +关注

    关注

    2270

    文章

    10897

    浏览量

    355792
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114744

原文标题:多个定时器同步输出的主从配置示例

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32定时器同步启动示例及应用提醒

    我们有时会利用STM32片内的多个TIMER进行级联,实现同步启动。不过有人会遇到没法同步启动的情况;或者说基于相同的
    的头像 发表于 11-09 10:49 5226次阅读
    STM32<b class='flag-5'>定时器</b><b class='flag-5'>同步</b>启动<b class='flag-5'>示例</b>及应用提醒

    stm32通用定时器是如何进行工作的

    stm32定时器有哪几种?stm32通用计时的特点有哪些呢?stm32通用定时器是如何进行工作的?
    发表于 11-23 07:57

    CubeMX的定时器级联配置

    原理级联配置方法方法简介与分析方法简介步进电机的转速是由输入的PWM频率所决定的,步进电机的转动角度是由输入的PWM的脉冲数所决定的,由于需要对步进电机到转速和转动角度都进行控制,所以分别使用两个
    发表于 01-06 07:00

    AT32F4xx定时器同步级联模式

    AT32F4xx定时器同步级联模式展示3个TMR之间的级联同步模式。
    发表于 10-27 06:17

    程序式八通道级联定时器

    程序式八通道级联定时器
    的头像 发表于 08-10 23:04 2744次阅读
    程序式八通道<b class='flag-5'>级联</b><b class='flag-5'>定时器</b>

    如何使用STM32F4进行定时器中断的实验程序资料说明

    本文档的主要内容详细介绍的是如何使用STM32F4进行定时器中断的实验程序资料说明
    发表于 03-06 08:00 22次下载
    如何使用STM32F4<b class='flag-5'>进行</b><b class='flag-5'>定时器</b>中断的实验程序资料<b class='flag-5'>说明</b>

    单片机进行定时器编程的详细资料说明

    本文档的主要内容详细介绍的是单片机进行定时器编程的详细资料说明
    发表于 04-18 17:27 2次下载
    单片机<b class='flag-5'>进行</b><b class='flag-5'>定时器</b>编程的<b class='flag-5'>详细</b>资料<b class='flag-5'>说明</b>

    使用51单片机进行定时器初值的计算详细资料说明

    本文档的主要内容详细介绍的是使用51单片机进行定时器初值的计算详细资料说明包括了:一、10MS定时器
    发表于 08-29 17:29 1次下载
    使用51单片机<b class='flag-5'>进行</b><b class='flag-5'>定时器</b>初值的计算<b class='flag-5'>详细</b>资料<b class='flag-5'>说明</b>

    使用51单片机进行定时器计数示例的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机进行定时器计数示例的程序免费下载。
    发表于 06-05 17:51 2次下载
    使用51单片机<b class='flag-5'>进行</b><b class='flag-5'>定时器</b>计数<b class='flag-5'>示例</b>的程序免费下载

    STM32通用定时器的单脉冲示例详解

    基于学习的目的,详细讲解关于标准外设库中的定时器的 17 个示例项目函数文件。本次介绍 OnePulse。
    发表于 07-01 08:00 10次下载
    STM32通用<b class='flag-5'>定时器</b>的单脉冲<b class='flag-5'>示例</b>详解

    什么是SysTick定时器?实现STM32时钟系统的详细资料说明

    什么是SysTick定时器?实现STM32时钟系统的详细资料说明主要内容包括了:Systick原理和配置方法,ALIENTEK 延时函数delay讲解
    发表于 01-02 08:00 3次下载
    什么是SysTick<b class='flag-5'>定时器</b>?实现STM32时钟系统的<b class='flag-5'>详细</b>资料<b class='flag-5'>说明</b>

    STM32F103C8T6 16位定时器级联为32位定时器

    为什么使用STM32F1定时器级联,主要是因为某些对于计时要求高的场合,而STM32F1单片机16位的定时器最多计数65535,那么很明显us级别的计时只能维持6.5535ms,有时候解算过程可能
    发表于 01-17 09:34 16次下载
    STM32F103C8T6 16位<b class='flag-5'>定时器</b><b class='flag-5'>级联</b>为32位<b class='flag-5'>定时器</b>

    工程师笔记|高精度定时器同步功能

    多个定时器多个定时器之间可以单独工作,也可以进行同步,且高精度定时器还能与片上的其他
    的头像 发表于 11-22 18:15 1590次阅读

    利用通用定时器输出PWM(附示例驱动直流电机)

    上一节讲述了时钟树和基本定时器配置方法,本节先介绍通用定时器和基本定时器的差异,然后粗略讲述PWM波原理,然后讲述如何配置通用
    发表于 04-03 14:56 0次下载
    利用通用<b class='flag-5'>定时器</b><b class='flag-5'>输出</b>PWM(附<b class='flag-5'>示例</b>驱动直流电机)

    详解CKS32F107xx系列的定时器同步功能

    我们将围绕定时器同步功能概述展开,并以其中一种功能为例——将定时器2给定时器3当预分频,最终级联
    的头像 发表于 11-26 17:51 341次阅读
    详解CKS32F107xx系列的<b class='flag-5'>定时器</b><b class='flag-5'>同步</b>功能