信号测量——捕获测量脉冲和周期,结合CubeMX和ST官方手册

📚 立志用功如种树然,方其根芽,犹未有干;及其有干,尚未有枝;枝而后叶,叶而后花。——王守仁

上文我们介绍了PWM输入模式 但是PWMI模式是输入捕获模式的一个特例

现在我们接着介绍 :常规的输入捕获模式

输入捕获(Input Capture)是定时器的一种功能模式,用于捕获外部信号的时间信息。通过配置定时器的输入捕获模式,可以实时记录外部事件的时间戳,通常用于测量外部信号的脉冲宽度、周期等参数。

CubeMX

这里我是使用的是定时器2 因为只使用了一个捕获通道2 捕获信号IC2 所以选择 Channel2 :Input Capture direct mode 直接

输入方式:捕获信号IC2 来自输入捕获通道1的边沿有效信号

预分配系数:(PSC):f103 TIM2对应时钟总线APB1(36Mhz) 但APB1挂载的定时器我这里给的还是72Mhz

时钟分频:Disable

主从模式:Disable

输入通道1极性:上升沿

IC 信号来源选择:Direct 直接输入模式

MDK代码

PS:目前这里只分析周期时间较短,不会发生溢出中断的情况

打开输入捕获中断 HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)

然后在输入捕获回调函数里面 对 输入捕获的极性 进行修改

因为这里的话,我没找到那个修改极性的函数 所以 我直接去修改寄存器

(关于如何快速找到相应寄存器 :先看那个函数里面有关乎到极性 然后看他函数里面到底是修改了哪个寄存器,知道大概是那几个寄存器之后 在参考手册里面进行搜索 查看具体细节)

如这样我们就知道应该修改哪个寄存器了 PS:注意我们这里的是IC2信号

参考手册

和我们的流程也差不多,只是我们在使用的时候CubeMX已经生成了一部分,函数也已经帮我个省去了去操作寄存器。

输出结果:

串口输入:对应的捕获值,和捕获差值 (输出高电平时间 和 周期时间 )

接着分析 :周期时间较长,会发生溢出中断的情况

因为周期较长,他可能一个 计数周期不够 或者好几个计数周期都不够

比如说我这里使用了一个函数发生器,给的一个周期为4.0s,高电平时间为700ms

所以一个计数周期 肯定是不够的 我这里一个计数周期为1.0s 为arr 为9999

故而我使用一个 定时器更新中断

在第357行,第一个上升沿捕获中断的时候,打开定时器更新中断

在第378行,第二个上升沿到来时候(一个周期完成),关闭定时器更新中断

对定时器更新中断处理 398行 对定时器溢出 进行计数

所以得到

high time = overTime*10000+CapVal[1]- CapVal[0] 高电平计数

pluse time=overTime*10000+CapVal[2]- CapVal[0] 周期计数

输出结果:

输出结果还算较为理想

本人水平较低,参考了他人文章,写着也是平时回顾,欢迎各位指正、交流!共勉!
 

上文:PWM输入模式——捕获测量脉冲和周期讲解结合CubeMX和手册-CSDN博客

下文:定时器的强制输出模式、输出比较模式 、PWM模式—CubeMX结合ST官方手册-CSDN博客

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值