STM32 CubeMX输入捕获测量PWM波形频率与占空比

使用的开发板是官方的STM32F412ZGTx NUCLEO开发板。本次主要是为了对PWM波形进行脉宽和频率的测量。很多的工程使用的是软件对同一个通道进行3次捕获,比较耗费系统资源,本次介绍使用硬件进行捕获,尽可能降低代码的工作量。

首先打开CubeMX,做如下设置:

1.先设置定时器10,用于输出PWM波形。


2.设置TIM2,用来进行输入捕获


至于为什么这么设置,我们放在最后面说明,此处使用一路信号进行两次捕获,可以降低软件的工作量。

3.其他的串口设置,这里不做说明。时钟树设置如下:


4.对定时器10进行如下设置:


TIM10使用的频率为100M,这里分频为20M,按照图中设置的周期,输出的PWM波形的频率大概在25K左右。

Pulse用来设置占空比。

5.定时器2的参数设置如下:


使能从模式,并且工作在复位模式,且触发信号源是TI1FP1,也就是在TI1FP1的上升沿,会复位所有的计数器,并更新对应的寄存器。定时器2分频之后使用10M的信号源。此处设置的重点是,将IC1捕获设置为上升沿捕获,且设置为直连模式,IC2设置为下降沿捕获。

下面是设计原理,如下:


注意图中红色标记的地方。这样设置之后,IC1,IC2可以对同一信号进行捕获,IC1在上升沿捕获,每次上升沿触发中断,读取对应捕获寄存器的数据就可以计算频率,读取IC2的捕获寄存器可以计算占空比。


使能定时器2的全局中断,用来读取捕获寄存器的数据。


最后生成代码,打开工程添加代码如下:

打开time.c文件,在第一处添加代码如下:





在主函数中添加如下代码:


到此代码生成完成。

可以直接计算出频率和占空比。

测试结果如下:


随着占空比的调节,软件可以准确识别对应的占空比,这里可以用来进行PID控制电机的转速啥的。

配上工程代码:STM32F4的代码:

CSDN下载地址:https://download.csdn.net/download/qq86376032/10445158






  • 9
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值