7.5.2 输入捕获功能应用:数字频率计设计
1.任务要求
利用定时器的输入捕获功能,结合LCD1602,设计一个数字频率计。要求被测信号的频率为1 Hz~10 kHz,幅度为3.3 V。请完成硬件设计、软件设计,并通过Proteus完成仿真和调试。
2.硬件设计
硬件电路图如图7.14所示,用NE555集成定时器产生1Hz~10 kHz的方波信号,连接到MCU的TIM3输入捕获通道1(PA6),LCD1602显示器用于显示频率,数据端与PC0~PC7相连,使能端RS、R/W、E分别与PC8、PC9、PC10相连。

图7.14 硬件电路图
3.软件设计
配置系统时钟为8 MHz,利用TIM3的输入捕获功能进行频率测量,将定时器TIM3的基本定时器预分频值配置成8,分频得到1 MHz的基准信号。定时器计数方式配置成向下计数,初值为65 535,使能输入捕获中断。在中断服务程序中分别记录下被测信号一个周期的计数值,然后根据基准时钟转换成频率。STM32CubeMX中的输入捕获配置如图7.15所示,生成的MDK工程文件如图7.16所示。
文件“gpio.c”里的程序用于完成对GPIO接口的初始化,由STM32CubeMX自动生成,无须修改。
文件“tim.c”里的程序用于将TIM3配置成输入捕获功能,需要在void MX_TIM3_Init(void)程序的末尾增加程序开启TIM3计数,并开启中断,增加的程序如下。
(https://www.daowen.com)
图7.15 输入捕获配置

图7.16 工程文件
![]()
在文件“main.c”中主要是完成对输入捕获的回调函数,以实现频率测量,程序如下。


4.仿真与调试
在Keil-MDK中进行编辑、编译、调试后,生成可执行文件。在Proteus中绘制仿真电路图,并将由MDK工程文件生成的.hex文件加载到工程中。调节滑动变阻器RV1,可调节NE555输出的频率,经过输入捕获后,在LCD1602中显示被测的频率值,仿真电路图与调试效果如图7.17所示。

图7.17 仿真电路图与调试效果