完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
前期准备
STM32CubeMX配置 首先新建工程后,配置系统时钟为48MHz。以TIM1为例,使能TIM1的时钟源为Internal Clock(即48MHz系统时钟),设置通道1为Input Capture direct mode,可以看到对应到PA8引脚自动被设置为TIM1_CH1功能。定时器基本参数的配置参考STM32CubeMx之TIM定时中断,其它具体配置如下图。 STM32的定时器通道可以设置上升沿捕获 、下降沿捕获或者上升沿下降沿都捕获。 当 捕获到 信号的上升沿或下降沿时, 产生一个捕获中断 。这里设置为上升沿捕获。 其中Prescaler Division ratio参数为可预置分频比,可设置为不分频或2/4/8分频,若设置为2分频,表示捕获到2个上升沿才产生一次中断。 Input Filter为输入滤波器参数,滤波器的功能简单来说就是多次检测视为一次有效,也就是说连续N次采样检测,如果都是高电平,则说明这是一个有效的电平信号,这样便可以过滤掉那些因为某些而干扰产生的一些信号。 设置完成后,打开定时器的溢出中断和捕获中断。 HAL_TIM_Base_Start_IT(&htim1);//启动定时器1中断 HAL_TIM_IC_Start_IT(&htim1,TIM_CHANNEL_1);//开启定时器1通道1捕获中断 编写两个中断回调函数,定时器溢出中断用于统计溢出次数,在捕获中断中记录当前的捕获值,两次捕获的总计数值=溢出次数*65535+两次捕获的差值。程序如下: 第二次捕获完成后,可以计算信号的频率: 采用这种计数方式测量频率属于测周法(测量周期),存在±1误差,当信号的频率较高时,TIM1_Counter值会变小,±1误差的影响将会被放大。因此,被测信号的频率越高,这种方法的测量误差越大。 另外一种方法为 测频法,用定时器设定一个确定的闸门时间(比如1秒),在1秒内记录捕获到的上升沿的次数。捕获次数/闸门时间即为被测信号的频率。这种方式同样 存在±1误差,被测信号频率越低,误差的影响就越大。 两种方法互补,工程师可根据被测信号的频率范围决定使用哪种方法。下一章将介绍另外一种频率测量的方法, 等精度测频。顾名思义,该方法的测量误差不受被测信号的影响,在全频率段内精度一致。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
1599 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4738 浏览 0 评论
4229 浏览 9 评论
3822 浏览 16 评论
4398 浏览 1 评论
4206浏览 3评论
2378浏览 0评论
3392浏览 0评论
1157浏览 0评论
2842浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 15:54 , Processed in 0.589728 second(s), Total 74, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1258