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

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

3天内不再提示

STM32定时器主从级联的应用示例分享

茶话MCU 来源:茶话MCU 作者:Miler 2021-11-26 11:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在STMCU中文社区有人咨询了类似下面的应用问题,有部分需求如下:

1.发送12个周期为500ns的脉冲(高电平200ns,低电平300ns),每隔4us发送一次,共计三次(36个脉冲,每12个脉冲之间间隔4us)。

2.在第一步中的每段12个脉冲的上升沿时,访问GPIO口,共计12个,三次共计36个。相关时序图如下:

384a2dec-4ddc-11ec-9eda-dac502259ad0.png

这里,我们就该问题的部分需求聊聊它的大致实现。先整理下需求:

连续三组12个周期为500ns的指定个数的小脉冲;

一个固定时间间隔10us(含12个脉冲本身的时间);

每个小脉冲对应1次GPIO的访问;

显然,我们一般会很自然地想到通过TIMER来完成,可以使用1个TIMER,也可以通过2个TIMER来完成。

如果使用1个TIMER,我们可以考虑使用更新事件对脉冲个数的统计及时间间隔的控制,同时基于比较事件或更新事件来触发DMA来实行对GPIO的访问。不过,这里每个脉冲周期为500ns,势必会发生频繁进入更新中断。

如果使用2个TIMER来实现起来就更为方便点。2个TIMER实现主从级联,各自任务如下安排:

主TIMER做时间间隔的控制,每10us产生一次触发事件,并开启更新事件中断,每发生3次更新事件即为一个大周期,后续启动根据其它条件定,此处不表。

从ITMER工作在触发从模式,同时选择它的某一通道做PWM输出,并工作在单脉冲模式,同时每个脉冲的比较事件触发一次DMA实现GPIO与内存间的传输。

基于上面的需求及规划,下面简单介绍下实现过程。我们选用STM32G4系列的Nucleo板【Nucleo-G431RB】来进行验证测试。

选择TIM1工作在从模式,输出脉冲的比较事件触发DMA完成对GPIO的访问。DMA每传输12个数据后进入DMA传输完成中断,并进行相关数据处理。令TIM3工作在主模式,它的计时周期为10us,每个周期产生一次更新事件作为触发输出并与TIM1的触发输入相连,作为TIM1的启动触发信号

通过查看STM32G4系列参考手册,我们可以得到如下片内定时器互联信号表。TIM3的TRGO信号可以作为TIM1的触发输入通道2的输入信号。

389a4174-4ddc-11ec-9eda-dac502259ad0.png

下面我们使用CubeMx进行配置。先看TIM1的相关配置【定时器计数时钟为10MHz】:

3903d45e-4ddc-11ec-9eda-dac502259ad0.png

39914e4c-4ddc-11ec-9eda-dac502259ad0.png

39f5c20a-4ddc-11ec-9eda-dac502259ad0.png

再看看看TIM3的基本配置:

3a5e6396-4ddc-11ec-9eda-dac502259ad0.png

完成相关初始化配置后创建工程,然后添加必要的用户代码。代码很简单,开启TIM1通道的pwm输出,使能TIM1-ch1比较事件的DMA触发功能,调用相关DMA功能函数,启动TIM3的计数器。

3ace4bd4-4ddc-11ec-9eda-dac502259ad0.png

其中,TIM_DMAcptPro()为DMA传输完成中断的回调函数,负责做相关数据的处理。TIM1的启动靠TIM3的更新事件来触发实现。

稍作编译调试即可看到如下结果:

黄色的信号为TIM1周期的脉冲输出,小脉冲间的间隔为4us.

蓝色信号为通过DMA写到GPIO的数据,高、低电平均代表一个数据。这些只是模拟下操作过程。

显然,当弄清实现原理后,基于CubeMx进行配置,整个过程实现起来还是比较简单的。这里需要我们对定时器的主从级联、定时器各类事件、比较输出的单脉冲模式的特性及对DMA运用有些了解。上面主要演示基于定时器主从模式的实现过程,更多细节还得阅读相关技术手册。

最后提醒个地方,现在是TIM3的更新事件去触发启动TIM1,显然第一次启动TIM1时需等待TIM3一个计数周期,如果不希望这样的话,我们也可以在TIM3启动的同时启动TIM1计数,只需在启动TIM3的同时手动产生个更新事件来实现。

编辑:jq

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

    关注

    23

    文章

    3378

    浏览量

    125091
  • dma
    dma
    +关注

    关注

    3

    文章

    584

    浏览量

    106387
  • 代码
    +关注

    关注

    30

    文章

    4983

    浏览量

    74544
  • GPIO
    +关注

    关注

    16

    文章

    1337

    浏览量

    56594

原文标题:STM32定时器主从级联的又一应用示例

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    低压步进电机驱动STSPIN220开发(2)----定时器中断产生指定数量脉冲

    在步进电机控制过程中,为了实现精确的位置和速度控制,经常需要输出指定数量的脉冲。这就需要使用定时器功能来生成PWM脉冲信号。本文将详细介绍如何利用STM32CUBEMX配置定时器以输出指定
    的头像 发表于 05-25 16:30 218次阅读
    低压步进<b class='flag-5'>器</b>电机驱动<b class='flag-5'>器</b>STSPIN220开发(2)----<b class='flag-5'>定时器</b>中断产生指定数量脉冲

    探索LTC2956:高效唤醒定时器的设计与应用

    探索LTC2956:高效唤醒定时器的设计与应用 在电子设备的设计中,低功耗和定时唤醒功能至关重要。今天我们就来深入了解一下由Linear Technology推出的LTC2956唤醒定时器,以及与之
    的头像 发表于 05-25 13:05 83次阅读

    探索Cebek I - 36延时定时器:设计与应用指南

    探索Cebek I - 36延时定时器:设计与应用指南 在电子工程师的日常工作中,延时定时器是一种常见且实用的设备。今天,我们就来深入了解Cebek I - 36延时定时器,从其特性、安装到操作
    的头像 发表于 05-11 14:40 138次阅读

    瑞萨RA系列FSP库开发实战指南之AGT低功耗定时器简介和结构框图

    瑞萨RA MCU有两种定时器外设:GPT(General PWM Timer)定时器和AGT(Asynchronous General Purpose Timer)定时器
    的头像 发表于 04-30 16:47 7567次阅读
    瑞萨RA系列FSP库开发实战指南之AGT低功耗<b class='flag-5'>定时器</b>简介和结构框图

    深入剖析NE555定时器:特性、参数与应用

    深入剖析NE555定时器:特性、参数与应用 在电子工程师的工具箱中,NE555定时器是一款经典且实用的双极性集成电路。它以其高精度的定时功能和广泛的应用场景,在电子设计领域占据着重要的地位。今天
    的头像 发表于 04-28 15:40 213次阅读

    LM555QML定时器:功能特性、应用及设计要点

    LM555QML定时器:功能特性、应用及设计要点 在电子设计领域,定时器是一种常用的器件,可用于生成精确的时间延迟或振荡。TI公司的LM555QML定时器就是这样一款高度稳定的器件,下面我们来详细
    的头像 发表于 02-10 15:40 443次阅读

    深入解析 LM555 定时器:特性、应用与设计要点

    深入解析 LM555 定时器:特性、应用与设计要点 一、引言 在电子工程师的工具箱中,定时器芯片是常用的基础元件之一。而 TI 公司的 LM555 定时器,以其高稳定性、多种工作模式和广泛的应用范围
    的头像 发表于 02-10 15:35 657次阅读

    LAT1173高精度定时器的同步功能应用笔记

    STM32G474 所含的高精度定时器(HRTIMER)其实包含了多个定时器,多个定时器之间可以单独工作,也可以进行同步,且高精度定时器还能
    发表于 01-11 17:32 0次下载

    LAT1183+高精度定时器中 single-shot 计数模式不工作应用笔记

    客户使用 STM32G474 的高精度定时器,基于 CubeMX 进行外设配置与代码生成,将某个子定时器的计数方式设置为 retriggerable single shot 方式,发现该子定时
    发表于 01-11 17:28 0次下载

    CW32F030是32位的MCU为什么不提供32位的定时器

    CW32F030提供丰富的定时器资源,有1个高级定时器、4个通用定时器和3个基本定时器,虽然定时器是16位的,但各个
    发表于 12-22 15:22

    PWM、定时器、SysTick 区别及应用场景

    在单片机和嵌入式开发中,经常会遇到PWM(脉宽调制)、定时器、SysTick(系统滴答定时器)这几个词。很多初学者容易把它们混为一谈,以为都是“定时相关的东西”。其实,它们在本质和应用上有明显差别
    的头像 发表于 11-17 10:53 865次阅读
    PWM、<b class='flag-5'>定时器</b>、SysTick 区别及应用场景

    SysTick系统滴答定时器简介

    SysTick—系统定时器是属于CM33内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数,计数每计数一次的时间为 1/SYSCLK,一般我们设置系统时
    的头像 发表于 09-23 09:50 1914次阅读
    SysTick系统滴答<b class='flag-5'>定时器</b>简介

    定时器同步之并行模式

    AT32F4xx定时器同步之并行模式 支持型号: AT32F 系列 主要使用外设: TIMER 获取示例 1 快速使用方法 1.1 硬件资源 AT-START-F403A V1.0 实验
    发表于 09-22 09:56

    大彩讲堂:VisualHMI-LUA教程-定时器的使用指南

    定时器的使用
    的头像 发表于 08-31 16:59 1503次阅读
    大彩讲堂:VisualHMI-LUA教程-<b class='flag-5'>定时器</b>的使用指南

    stm32H743定时器溢出的原因?怎么解决?

    我利用定时器更新中断实现软件计时,定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在定时器的中断处理函数中更新的,定时器
    发表于 06-23 08:26