Slave Mode :选用复位模式
触发器随意
时钟源选用内部时钟
开启两个通道一个捕获上升沿一个捕获下降沿
//第一步main函数使能
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
//编写中断回调
//定义全局变量
uint32_t f40==0;
uint32_t duty==0;
uint32_t va1=0;
uint32_t va2=0;
//编写中断回调
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_2)
{
va2=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2);
va1=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1)+1;
if(va2!=0)
{
duty=(float)va1*100/va2;
f40=HAL_RCC_GetHCLKFreq()/va2;
__HAL_TIM_SetCounter(&htim2,0);
}
else
{
va1=0;
va2=0;
}
}
}
效果还不错