在实际产品开发中有时可能需要实现一些指定个数脉冲的输出,这里介绍几种基于定时器的实现方式。
1、 利用rcr寄存器结合单脉冲模式;
2、 利用dma实时修改ccr寄存器的模式;
3、 利用定时器主从模式;
4、 利用中断对脉冲实现计数模式;
一、利用rcr结合单脉冲模式
这种方式仅限于带rcr寄存器的高级定时器,配合单脉冲模式,实现起来非常方便。
基本原理:计数器发生rcr+1个溢出动作后触发更新事件,在单脉冲模式下,定时器发生更新事件时将停止计数并实现指定个数的脉冲输出。
参考配置:
hal_tim_pwm_start(&htim1, tim_channel_1);//tim1通道1输出一串脉冲。
二、利用dma实时修改ccr寄存器的模式;
基本原理:基于定时器事件触发dma从而动态修改ccr寄存器的值最终实现指定个数的脉冲输出。
下面示例使用定时器更新事件触发dma,输出10个脉宽各不一样的脉冲.
uint16_tdataforccr[]={25,43,18,65,27,44,66,38,76,11,00};
参考配置:
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;
眼尖的人可能发现上图中最后有个额外的尖脉冲,那是因为这里是基于更新事件触发dma,dma传输新数据过来时有点延迟导致下一个pwm脉冲已经发生作用。这时,我们可以调整触发事件,比方这里将触发事件调整为比较事件,并开启预装功能即可以消除这个问题。上面测试过程是关闭了ccr寄存器的预装功能的。
该方式可以做到非常灵活精准,但要多用个dma外设。
三、利用定时器主从模式
基本原理:利用两个定时器级联成主从模式,一个定时器输出门控信号,控制另外一个定时器的计数工作。
下面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);
此模式实现起来简单快捷,但当门控信号时钟与从定时器时钟缺乏同步关系时,输出脉冲个数可能有偏差,尤其结尾的电平可能摇摆不定。
四、利用定时器中断模式
基本原理:基于定时器更新事件或比较事件对脉冲个数进行实时计数,到达指
定数据后通过修改ccr或arr寄存器的值来停止后续pwm的输出。具体操
作需结合pwm输出模式和最后希望停止输出时的电平来对ccr进行赋值。
比如:输出10个脉冲,最后电平停留在高电平。我们可以基于比较事件来对脉冲进行,并开启ccr寄存器的预装功能。若选用pwm1模式,极性选择为高有效,向上计数模式时,则在第10个比较中断里修改ccr=arr+n[n大于等于1];若选用pwm2模式,极性选择为高有效,则在第10个比较中断里修改ccr=00。
该模式实现起来较为简单,只需对定时器有些基本的了解即可,无需涉及定时器更多知识及dma方面的应用等。
上面大体介绍了利用stm32定时器实现指定个数脉冲输出的四种模式,各有特色,供君参考。我们实际应用中可以灵活采用。
三星与特斯拉、现代汽车集团合作,探索智能家居与联网汽车
2020年第四季度,全球智能手机出货达到3.596亿部
首届能源电子产业创新大赛,锦浪科技斩获工信部创新产品殊荣
oracle判断字符串包含某个字符
不会织毛衣?没事,AI会
实现指定个数脉冲输出的四种模式
智能电视仍存在强制观看开机广告现象
NSCAI投票通过了一份长达700多页的所谓“报告”
大数据时代的移动学习是怎样的发展趋势
三星雄踞智能手机全球出货量第一宝座,超越第二名苹果很大一截
人工智能的介绍和在计算机网络技术中的运用的详细概述
Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解
芯讯通5G模组产品被授予HUAWEI COMPATIBLE证书
福建省部署开展2020年省数字经济发展专项资金5G产业、人工智能等六个专项项目申报工作
平价时代渐行渐近,中国风电来到了“凌云渡口”
KUKA机器人对于涂胶设备的清胶控制
2020高工LED年会第三批名单来了!
百度致力成为交通强国的AI引领者
纯电动汽车的典型整车控制系统及芯片方案解析
现代C++ unit test库之doctest基本用法