跳到主要内容

频率测量

注意:以下案例仅适合 ShineBlink C1开发板,因为 C2 开发板不能测量连续波形(脉冲个数不能超过 256 个),像本例中这样测量无限长度的 1Khz 的方波是无法测量的。

一、实现功能

Core 提供一个引脚 D4 可以用来计脉冲个数

本章节实现的功能描述:外部向 Core 的 D4 引脚输入一个 1Khz 的方波,并在 0.96 寸 Oled 屏幕上显示实际测量的频率。Core 每隔 1 秒测一次该方波的下降沿个数,从而验证该方波的频率为 1Khz。

二、接线图

layout

三、完整代码

--初始化
function Init()
--设置0.96寸oled模块占用SCL1和SDA1引脚
LIB_0_96_OledConfig("IIC1")
--配置计量脉冲的D4引脚内部上拉,触发条件为下降沿,测量周期为1000ms
LIB_PulseCountMeasureConfig("PullUp","Fall",1000)
end
--初始化
Init()
--开始大循环
while(GC(1) == true)
do
--查询计数结果,该函数需要及时在测量周期内调用,不然会错过上1个测量周期的计数结果
finish_flag, data = LIB_PulseCountMeasureFinishCheck()
if finish_flag == 1 then
--通过oled屏幕展示结果
LIB_0_96_OledPuts("4","1",string.format("Freq= %dHz",data))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

四、实际输入波形如下图:

pulsewidth_in

五、程序运行结果

pulsecount_result