1.原理图

2.配置

3.代码
关键函数
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1)
HAL_TIM_IC_CaptureCallback(TIM_HandTypeDef *htim)//回调函数
HAL_TIM_GET_COUNTER(&htim3)
__HAL_TIM_SetCounter(&htim3,0)
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1)
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1)
int r39=0,r40=0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim==&htim2)
{
int temp = __HAL_TIM_GetCounter(&htim2);//temp的值为一秒钟PWM波的次数
__HAL_TIM_SetCounter(&htim2,0);
r40 = 1000000/temp;
//1000000相当于将1秒钟分成1000000份,求得的结果相当于PWM的周期的倒数。假如说一秒钟分成10份,执行一次需要2份,10/2=5,也就是一秒钟可以执行5次,频率为5Hz
}
else if(htim==&htim3)
{
int temp = __HAL_TIM_GetCounter(&htim3);
__HAL_TIM_SetCounter(&htim3,0);
r39 = 1000000/temp;
}
}
文章介绍了如何使用STM32的HAL库配置TIM模块进行IC输入捕获,通过HAL_TIM_IC_CaptureCallback回调函数获取PWM波的周期,并计算其频率。主要涉及的关键函数有HAL_TIM_IC_Start_IT用于启动捕获,HAL_TIM_GetCounter获取计数值,HAL_TIM_SetCounter重置计数器,以及根据捕获到的计数值计算频率的方法。
1092

被折叠的 条评论
为什么被折叠?



