stm32f4 PWM捕获 (上升沿/下降沿/高低电平时间)详解(含代码)

最近毕业设计又需要实现一个小功能,使用PWM捕获到一个信 的上升沿,并在这个信 的上升沿进行一些操作

一开始我有尝试过读取管脚的高低电平,但是由于这个信 的速度过快,高低电平是读取不到的,只能采用PWM捕获的方式,其实也比较好操作!

与以往需要两个通道来进行PWM捕获不同,这个代码只需要一个通道就可以实现

首先依然是PWM捕获的配置,代码如下:

比较需要注意的是,除了基本的IO口修改,PWM捕获一共4个通道,还需要根据使用的IO口定义自己的通道,我这里用的是TIM5的2通道,对应着stm32f4的话是PA1

配置完成之后,TIM5CH2_CAPTURE_STA==0x40的时候,就是上升沿的时刻了

如果想要捕获下降沿,配置的时候TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;  就修改成下降沿

这里还需要注意的一点是,STA和VAL都需要定义成extern

在main里面,配置PWM捕获的速度

如果想要获取PWM的高低电平时间,就需要定义temp,在这里temp是高电平的时间,如果想要获取低电平时间,前面配置成获取低电平就行了

之后,我们将进行PWM捕获的管脚(这里是PA1),连接到需要进行PWM捕获的信 管脚上(而不是用输出信 的管脚直接去PWM捕获)。我只需要获取高电平,在debug里面,我们可以看到STA会0x40–0x00不断变化,说明捕获成功

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月1日
下一篇 2022年5月1日

相关推荐