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);
}
}