原理框图

代码
cubeMX配置
TIM2,TIM3

代码展示
main(while)
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
char buff[20];
char buff1[20];
char buff2[20];
extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim3;
extern uint32_t fre1;
extern uint32_t fre2;
LCD_Init();
LCD_Clear(Black);
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
while (1)
{
sprintf(buff," fre ");
LCD_DisplayStringLine(Line1,(uint8_t *)buff);
sprintf(buff1," fre1_R40=%d",fre1);
LCD_DisplayStringLine(Line2,(uint8_t *)buff1);
sprintf(buff2," fre2_R39=%d",fre2);
LCD_DisplayStringLine(Line3,(uint8_t *)buff2);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
中断函数
uint32_t fre1,capture1;
uint32_t fre2,capture2;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim){
if(htim->Instance==TIM2){
capture1=TIM2->CCR1;
TIM2->CNT=0;
fre1=80000000/800/capture1;
}
if(htim->Instance==TIM3){
capture2=TIM3->CCR1;
TIM3->CNT=0;
fre2=80000000/800/capture2;
}
}