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

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

3天内不再提示

实现指定个数脉冲输出的四种模式

茶话MCU 来源:茶话MCU 作者:茶话MCU 2022-07-24 17:56 次阅读

在实际产品开发中有时可能需要实现一些指定个数脉冲的输出,这里介绍几种基于定时器的实现方式。

1、 利用RCR寄存器结合单脉冲模式;

2、 利用DMA实时修改CCR寄存器的模式;

3、 利用定时器主从模式;

4、 利用中断对脉冲实现计数模式;

一、利用RCR结合单脉冲模式

这种方式仅限于带RCR寄存器的高级定时器,配合单脉冲模式,实现起来非常方便。

基本原理:计数器发生RCR+1个溢出动作后触发更新事件,在单脉冲模式下,定时器发生更新事件时将停止计数并实现指定个数的脉冲输出。

d76f26dc-0b34-11ed-ba43-dac502259ad0.png

参考配置:

d790d962-0b34-11ed-ba43-dac502259ad0.png

d7bbc744-0b34-11ed-ba43-dac502259ad0.png

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);//TIM1通道1输出一串脉冲。

d7e194f6-0b34-11ed-ba43-dac502259ad0.png

二、利用DMA实时修改CCR寄存器的模式;

基本原理:基于定时器事件触发DMA从而动态修改CCR寄存器的值最终实现指定个数的脉冲输出。

下面示例使用定时器更新事件触发DMA,输出10个脉宽各不一样的脉冲.

uint16_tDataforCCr[]={25,43,18,65,27,44,66,38,76,11,00};

参考配置:

d7ff68fa-0b34-11ed-ba43-dac502259ad0.png

TIM_CCxChannelCmd(htim3.Instance, TIM_CHANNEL_1,TIM_CCx_ENABLE);

__HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE);

__HAL_TIM_ENABLE_DMA(&htim3, TIM_DMA_UPDATE);

HAL_DMA_Start(&hdma_tim3_up,(uint32_t)DataforCCr, (uint32_t)&htim3.Instance->CCR1, 11);

__HAL_TIM_ENABLE(&htim3);

TIM3->EGR = TIM_EGR_UG;

d833e9fe-0b34-11ed-ba43-dac502259ad0.png

眼尖的人可能发现上图中最后有个额外的尖脉冲,那是因为这里是基于更新事件触发DMA,DMA传输新数据过来时有点延迟导致下一个PWM脉冲已经发生作用。这时,我们可以调整触发事件,比方这里将触发事件调整为比较事件,并开启预装功能即可以消除这个问题。上面测试过程是关闭了CCR寄存器的预装功能的。

该方式可以做到非常灵活精准,但要多用个DMA外设。

三、利用定时器主从模式

基本原理:利用两个定时器级联成主从模式,一个定时器输出门控信号,控制另外一个定时器的计数工作。

d856fa84-0b34-11ed-ba43-dac502259ad0.png

下面TIM4工作在主模式,其OC输出作为触发信号给到TIM8,TIM8工作在门控模式。

TIM_CCxChannelCmd(htim4.Instance, TIM_CHANNEL_1,TIM_CCx_ENABLE);

__HAL_TIM_ENABLE(&htim4);

TIM_CCxChannelCmd(htim8.Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);

__HAL_TIM_MOE_ENABLE(&htim8);

__HAL_TIM_ENABLE(&htim8);

d8743df6-0b34-11ed-ba43-dac502259ad0.png

d8a08f3c-0b34-11ed-ba43-dac502259ad0.png

此模式实现起来简单快捷,但当门控信号时钟与从定时器时钟缺乏同步关系时,输出脉冲个数可能有偏差,尤其结尾的电平可能摇摆不定。

四、利用定时器中断模式

基本原理:基于定时器更新事件或比较事件对脉冲个数进行实时计数,到达指

定数据后通过修改CCR或ARR寄存器的值来停止后续PWM的输出。具体操

作需结合PWM输出模式和最后希望停止输出时的电平来对CCR进行赋值。

d8cc901e-0b34-11ed-ba43-dac502259ad0.png

比如:输出10个脉冲,最后电平停留在高电平。我们可以基于比较事件来对脉冲进行,并开启CCR寄存器的预装功能。若选用PWM1模式,极性选择为高有效,向上计数模式时,则在第10个比较中断里修改CCR=ARR+n[n大于等于1];若选用PWM2模式,极性选择为高有效,则在第10个比较中断里修改CCR=00。

该模式实现起来较为简单,只需对定时器有些基本的了解即可,无需涉及定时器更多知识及DMA方面的应用等。

上面大体介绍了利用STM32定时器实现指定个数脉冲输出的四种模式,各有特色,供君参考。我们实际应用中可以灵活采用。

审核编辑:汤梓红

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

    关注

    31

    文章

    5336

    浏览量

    120230
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355732
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114719
  • 脉冲输出
    +关注

    关注

    0

    文章

    18

    浏览量

    10766

原文标题:使用定时器输出指定个数脉冲的几种方式

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

收藏 人收藏

    评论

    相关推荐

    DDS AD9910的四种工作调制模式是什么意思

    DDS AD9910的四种工作调制模式是什么意思?说是有单频模式数字斜坡模式RAM模式 和并行模式
    发表于 07-16 19:37

    请问DDS AD9910上的四种工作模式是什么意思,有什么区别?

    DDS AD9910的四种工作调制模式是什么意思?说是有单频模式数字斜坡模式RAM模式 和并行模式
    发表于 12-04 09:07

    STM32芯片GPIO的四种输入模式四种输出模式

    STM32芯片的GPIO一共有8配置模式,对8模式的理解如下1.四种输入模式上拉输入:在默认
    发表于 05-21 07:55

    单片机四种输入模式

    单片机四种输入模式 MCU输入模式有浮空、上拉、下拉、模拟输入这四种模式,如果采用上拉或者下拉模式
    发表于 08-24 16:19

    变频器主要支持四种模式

    变频器主要支持四种模式:无PG的V/F模式,有PG的V/F模式,无PG的矢量控制模式,有PG的矢量模式
    发表于 09-03 06:57

    怎样使用定时器输出指定个数的PWM脉冲

    怎样使用定时器输出指定个数的PWM脉冲
    发表于 12-21 06:55

    怎样使用定时器输出指定个数的PWM脉冲

    在步进电机控制时,经常会遇到需要输出指定个数脉冲实现精确控制。本篇文章将介绍怎样使用定时器输出
    发表于 01-06 06:19

    二维码的四种主要应用模式

    本文介绍二维码主要的四种应用模式,包括读取数据模式、解码上网模式、解码验证模式、解码通信模式
    发表于 01-25 11:52 3425次阅读

    STC单片机如何实现输出固定的脉冲个数

    实现方法:运用PWM输出功能输出一定频率(F)的脉冲,在一定的时间、以一定的频率输出脉冲
    发表于 10-24 15:43 1w次阅读
    STC单片机如何<b class='flag-5'>实现</b><b class='flag-5'>输出</b>固定的<b class='flag-5'>脉冲</b><b class='flag-5'>个数</b>

    STM32如何实现可调频率、 占空比的PWM波形,且可指定输出脉冲个数

    STM32如何实现可调频率、占空比的PWM波形,且可指定输出脉冲个数
    的头像 发表于 03-12 11:04 2.7w次阅读

    四种方式实现led点亮

    四种方式实现led点亮
    发表于 01-04 14:31 4次下载

    IEC 61851标准中的四种EV充电模式

    在本文中,我们将了解国际电工委员会 (IEC) 规定的不同 EV 充电模式。这些模式在处理电动汽车传导充电系统的 IEC 61851 标准中指定。该标准描述了四种不同的充电
    的头像 发表于 06-24 15:06 9911次阅读
    IEC 61851标准中的<b class='flag-5'>四种</b>EV充电<b class='flag-5'>模式</b>

    GPIO的四种输入模式介绍

    32位寄存器共同控制。 输出和输入都是针对芯片引脚来讲的(即引脚的对外输出,和外界对引脚的输入)。 四种输入模式介绍 输入模式下可读取端口的
    的头像 发表于 11-09 16:51 6525次阅读
    GPIO的<b class='flag-5'>四种</b>输入<b class='flag-5'>模式</b>介绍

    介绍MCUboot支持的四种升级模式(2)

    介绍MCUboot支持的四种升级模式,分别是Overwrite、Swap、Direct XIP和加载到RAM中执行。由于FSP不支持第四种——加载到RAM中执行,因为我们重点介绍前三
    的头像 发表于 06-13 10:56 906次阅读
    介绍MCUboot支持的<b class='flag-5'>四种</b>升级<b class='flag-5'>模式</b>(2)

    关于温补晶振的四种输出模式详解

    TCXO(温度补偿晶振)作为一高精度时钟源,其独特的温度补偿技术使其在各种环境条件下都能保持稳定的频率输出。华昕晶振将详细介绍TCXO的四种主要输出
    的头像 发表于 07-27 08:34 494次阅读
    关于温补晶振的<b class='flag-5'>四种</b><b class='flag-5'>输出</b><b class='flag-5'>模式</b>详解