TIM-使用通道三捕获PWM
在我们常规印象中都是认为定时器的通道三,通道四是同时捕获不了PWM的占空比和频率的,但实际是可以的!!
一,在说明这个之前我们先介绍下官网例程相关配置对应框图代表的功能以便更好的理解
1,不用多说,是对通道的选择,用哪个通道即用对应的引脚捕获
2,配置输入分频,,这里配置不分频
3,配置输入滤波器 不滤波
4,上升沿捕获
5,直连,也就是映射到TI1上,即通道一用来捕获。在定时器框图中体现在这(即如果选TIM_ICSelection_IndirectTI那就是用通道二来捕获),
这时那就是通道一捕获周期,通道二捕获占空比(用括号中的则相反)
再者就是对中断的配置,以及对定时器从模式的配置,下面对例程中的从模式进行讲解
第一个函数:TIM_SelectInputTrigger( TIM1, TIM_TS_TI1FP1 ),作用是选择输入触发 TI1FP1,框图中体现:
第二个函数:TIM_SelectSlaveMode( TIM1, TIM_SlaveMode_Reset ),使用从模式中的复位模式(即信号触发后会清零计数器)。
第三个函数:TIM_SelectMasterSlaveMode( TIM1, TIM_MasterSlaveMode_Enable ),即使能定时器的主从模式。
再后来就是对中断的配置了,直接读取下捕获比较寄存器就行了。
注:其实TIM_SetCounter( TIM1, 0 )这个函数的调用是多余的,因为已经配置了从模式,当TI1有上升沿时会复位定时器,将定时器计数值置零。
这样就配置好了基本的PWM捕获例程!!!
二,下面重点是怎么用通道三或者通道四捕获PWM,我们查看框图,发现其具有和通道一,通道二一样的功能,这样模仿通道一,通道二仿制一个
TIM_PWMIConfig( TIM1, &TIM_ICInitStructure );就好了。其实这个函数中包含了对通道一,二的配置,我们仿制个通道三,四就行了。
可直接跳过去改成这样或者再定义一个函数。
然后我们模仿通道一二对中断进行配置(尽量不要在中断中打印,会影响实际效果)
注:这里我们就必须用TIM_SetCounter( TIM1, 0 );这个函数了,因为通道三,四没有像通道一,二TI1FP1这样的触发源。
不用再配置从模式了,当然通道三四也没有对应的触发源!
好了结束,看效果。输入的是10K,占空比为70的PWM:
注:
1,如果配置了仍然捕获不到或者有问题,可检查下打印口是不是用的串口一(PA9),与通道三冲突了,改成串口二打印即可。
如仍有问题,可留下你的邮箱,将工程发送给你!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具