完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、手册中的说明
在《STM32中文参考手册V10.0.PDF》的280页有关于“使用一个定时器作为另一个的预分频器”的介绍,本篇即是以此为基础实现的。实现的原理是主定时器输出PWM波,并且在每次计数溢出时输出一个信号作为从定时器的计数时钟,从定时器的计数器就可以计满需要的PWM脉冲个数后产生中断,然后在中断程序里关闭主定时器和从定时器即可实现。 这里以定时器4和定时器5为例进行说明,定时器4为主,定时器5为从,其连接示意图如下: 二、cubexMX的配置 这里从PD13输出TIM4通道2的PWM,这里TIM5选择外部时钟模式,来源是ITR2,也就是TIM4的计数器更新事件输出的上升沿(后面还要配置TIM4输出更新事件)作为TIM5的计数时钟。 主定时器TIM4的配置如下,使能更新事件作为触发事件,同时注意PWM的极性要选择成Low,不然很容易导致多输出一个毛刺脉冲,后面会依个人所见分析原因。 当PWM输出极性配置成High时,20个脉冲实际出现的波形如下,可以看到输出的频率是正确的,如上面配置的1k,在脉冲测量里有21个脉冲,最后有一个小毛刺。 从定时器TIM5的配置如下,这里主要需要注意的是输出的脉冲个数必须减1,注意若要实时可修改脉冲数,须将自动重装载disable 同时注意需要使能TIM5的全局中断 最后输出的波形如下所示,漂亮的一逼 下面简要分析一下为什么PWM输出极性设置为high时会多一个毛刺,这里以输出4个脉冲为例,如下图所示,计数器从0到999逐一计数,当在499时发生匹配PWM的输出翻转,当配置为High时,到最后一个时,从定时器产生中断,进入中断处理程序由软件来关闭PWM输出,由于中断的延迟及指令执行需要时间,故不能立即关闭PWM,并且关闭PWM输出后不管什么极性IO都会回到低电平,从而产生一个毛刺输出。而当输出极性配置Low时,只要中断里关闭PWM的时间小于PWM的半个周期,基本可保证输出的PWM个数是正确的,但是从定时器中断的优先级要足够的高,最好的还是用逻辑分析仪或者示波器调试确认一下。 三、从模式内部触发连接 STM32F103定时器从模式内部触发连接 [tr]Slave TIMITR0(TS=000)ITR1(TS=001)ITR2(TS=010)ITR3(TS=011) 表明哪些可以作为从定时器,以前它能接收哪些定时器的什么信号。如TIM1作为从定时器时,TIM5、TIM2、TIM3、TIM4可以做为TIM1的主定时器输出触发信号。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:29 , Processed in 0.821063 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号