HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1); //PA6 打开定时器捕获中断
//打开定时器溢出中断,防止捕获到的值过大产生溢出根据自己要捕获的值得大小判断要不要考虑溢出中断
// HAL_TIM_Base_Start_IT(&htim3);
uint16_t T3Count = 0 ;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim3)
{
num =HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1)+T3Count*65536; //获取当前的捕获值.
// TIM_SET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_1,TIM_ICPOLARITY_RISING); //在需要时配置产生捕获中断的方式,上升沿还是下降沿
__HAL_TIM_SET_COUNTER(&htim3,0) ; //产生捕获中断取出寄存的值后就得清除寄存器里的值
T3Count = 0 ; //清除定时器溢出中断的值
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim3)
{
T3Count++; //16位的捕获,当捕获的周期大于65535时定时器就会产生溢出中断
}
}