Bootstrap

2025年第16届蓝桥杯嵌入式竞赛学习笔记(八):输入捕获PWM频率

1.如何测量PWM波的频率

频率公式 f = 1/T

周期T实际就是波形两个上升沿之间的时间

输入捕获的捕获在于PWM波上升沿(或下降沿)的时候会产生一个中断。

怎么在这两个中断之间获取这个周期T:

在上升沿产生时将CNT置0,在下一个上升沿的时候使用一个变量capture_value存储CNT的值。

这样的话就可以计算出这个周期T的值。

CNT加1所耗的时间为(PSC + 1)/ 系统频率(80MHz)

那么周期T = t0 * capture_value

频率f为

这个就是我们最终计算频率的一个公式

2.功能要求

上一章我们完成了条件1,现在开始做条件2

3.CubeMX配置

将PA7引脚设为TIM17_CH1

点开TIM17,激活一下,然后选择输入捕获模式,将PSC设为80-1

使能一下中断

配置完成后点击右上角生成代码

4.代码部分

首先使用函数,使能输入捕获的中断

HAL_TIM_IC_Start_IT(&htim17,TIM_CHANNEL_1);

写输入捕获的中断回调函数,代码如下

uint32_t fre,capture_value;

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
	if(htim -> Instance == TIM17)
	{
		capture_value = HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);
		TIM17 -> CNT = 0;
		fre = 80000000 / (80 * capture_value);
	}
}

;