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);
本文详细介绍了STM32定时器的两种使用方式:计数计时和输入捕获功能。通过HAL库函数启动定时器,读取计数值,以及设置输入捕获的触发沿来测量信号周期。同时,展示了如何在STM32CubeMX中配置PE9引脚和定时器捕获下降沿。

3865

被折叠的 条评论
为什么被折叠?



