本模块使用LCD显示测出的频率
板载频率控制器有两个,R39和R40,是板上的两个蓝色小旋钮(R37和R38是电压输出)
原理:
定时器输入捕获模式 捕获待测信号连续两个上升沿(或下降沿),在CRR计数器内计数,当系统时钟配置为80MHz时,将PSC设置为79,即80分频,CRR计数器以1MHz的速率进行计数。
在第一个上升沿(或下降沿)出现时,CRR计数器被清零,第二个上升沿(或下降沿)出现时,记录该计数值并产生中断,在中断函数内即可读取该计数值。
使用
,计算频率,N为CRR计数值。
注意,16位计数器的最高计数值为65535,如果待测信号的周期过长,会使CRR计数溢出。
查阅原理图:
R40对应的引脚为PA15
CubeMX配置:
时钟配置为80MHz;
配置PA15为TIM2的通道1(其余引脚为LCD的配置)
TIM2配置如图,未框选的默认
记得打开TIM2的中断
编程部分:
在主函数内使用HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
启动定时器
使用中断回调函数,当产生中断时,读取计数器内的值,同时清零计数器
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
crr_value = __HAL_TIM_GET_COUNTER(&htim2); //读取计数值
__HAL_TIM_SET_COUNTER(&htim2,0); //清空计数器
f = 1000000/(float)crr_value; //计算频率
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); //重新启动中断函数
}
同时使用LCD显示待测信号的频率,转动R40可观察到频率变化