CubeMX配置输入捕获模式获取输入信号脉宽

前言:最近做一个小玩意又用到了单片机的输入捕获功能,这里记录下配置过程(以便以后照搬)

 

1、输入捕获原理

在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中。当发生捕获事件时,相应的CCxIF标志(TIMx_SR寄存器)被置1,如果开放了中断或者DMA操作,则将产生中断或者DMA请求。如果发生捕获事件时CCxIF标志已经为高,那么重复捕获标志CCxOF(TIMx_SR寄存器)被置1。写CCxIF=0可清除CCxIF,或读取存储在TIMx_CCRx寄存器中的捕获数据也可清除CCxIF。写CCxOF=0可清除CCxOF。

简单解释:定时器在计数,如果检测到设置的极性边沿信号,触发中断。

2、主要问题

1)怎么使用输入捕获功能检测输入信号脉宽

在最开始设置为上升沿捕获,当捕获到一个上升沿后,把当前计数器的值记录下来,然后把极性设置为下降沿捕获,当检测到下降沿信号时候再记下当前寄存器的计数值,然后用两个值融合即可得到脉宽时间。

这里有一个问题要注意:比如上升沿时间点在上一个周期,下降沿时间点在下一个周期,那么在下降沿-上升沿之前还要再加上一个定时器周期。

实现过程:

分频系数和 计数值可以根据自己情况设定,之后代码与之配合即可。

主要函数:

1】定义一些标志位以及存储数组

2】输入捕获中断回调函数:

3】调用实现及数据处理

调用上面函数即可实现脉宽捕获功能。


 

2)怎么实现脉冲计数功能(先放这里,这个在以后使用再遇到的时候再补充记录)

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值