前言:
IC输入捕获通常用于测量脉冲信号、计数器、测速器等方面。它的基本原理是通过输入计数器来捕获外部脉冲信号,并将捕获的数据存储在输入寄存器中。
本文将介绍双通道输入捕获。
cubemx配置如下:
模式选择复位,触发源选择TI1FP1,时钟选择内部,分频系数设置,通道一选择直连,通道二选择交叉。
其中,通道一的触发极性选择上升沿,通道二选择下降沿。
记得开启NVIC
代码
初始化代码
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM3)
{
if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)
{
icValue1=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1)+1; //上升沿脉冲个数
}
else if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_2)
{
icValue2=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_2)+1; //下升沿脉冲个数
}
}
}