1、可以使用定时器计数计时
HAL_TIM_Base_Start(&htim1);//启动计数
a = TIM1->CNT;//获取计数
while(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_9)==SET);//等待
2、使用定时器的输入捕获功能,捕捉上升沿下降沿即高电平时间
HAL_TIM_IC_Start(&htim1, TIM_CHANNEL_1);//启用输入捕获
__HAL_TIM_SET_CAPTUREPOLARITY(&htim1, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);//设置触发沿
time = HAL_TIM_ReadCapturedValue(&htim1, TIM_CHANNEL_1);//获取捕获寄存器值
__HAL_TIM_SET_COUNTER(&htim1, 0);//重置CNT
3、两者灵活运用
在STM32CubeMX中配置,PE9下拉模式,定时器捕获下降沿
while(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9)==RESET);
HAL_TIM_IC_Start(&htim1, TIM_CHANNEL_1);
time = HAL_TIM_ReadCapturedValue(&htim1, TIM_CHANNEL_1);
__HAL_TIM_SET_COUNTER(&htim1, 0);