STM32笔记:高精度频率计-基于FREERTOS

本文介绍如何用STM32F107VC(Waveshare Open107V实验板)实现高精度的频率计。

开发环境:

IDE:STM32CubeIDE 1.8

固件库:STM32Cube_FW_F1_V1.8.4

操作系统:FREERTOS CMSIS_V1

函数发生:RIGOL DG5072函数信号发生器,产生0-3.3V的方波

硬件:Waveshare Open107V,STM32F107VC, 晶振25MHz,工作频率72MHz

思路:

1.用TIM3做外部脉冲输入,模式为:Slave Mode- External Clock Mode 1, Trigger Source:TI2FP2,上升沿触发,下拉。不产生中断

2.用TIM7做定时器,1ms产生一次中断,优先级为0(不使用rtos的函数,如果使用的话,最高优先级只能是5)

3.声明一个16bit的全局数组FrBuf,长度为1200(需要大于1000,等于的话结果波动很大,大多少没有测试),每次TIM7中断时,将TIM3计数存入FrBuf,位置用位置计数器bufEndFr标识。

4.利用FREERTOS的Timer,设定超时为1秒,每次超时从bufEndFr开始,完后计算1001个单元之间的差值,将差值累加则得到最近一秒的频率,发送至串口。

测试结果:

无输入:0
1Hz:1
2Hz:2
10Hz:10
30K:29999
50K:49998-99
80K:79997-98
90K:89997

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

st01lsp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值