1.STM32CubeMX配置
配置的系统时钟是100M,Timer的时钟也是100M
Timer 的频率为:100M 分频 1000 = 0.1MHz
也就是定时器 每10us 计一个数
打开TIM4_CH2引脚中断
2.程序应用
在main.c
中开启中断
HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1); // 开启tim4通道1的中断
HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_2); // 开启tim4通道2的中断
TIM4_CH2引脚中断回调
static uint32_t TempPIpre = 0;
static uint32_t TempPIpul = 0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
{
TempPIpre = HAL_TIM_ReadCapturedValue(&htim4, TIM_CHANNEL_1); // 1.读取高电平时间
TempPIpul = HAL_TIM_ReadCapturedValue(&htim4, TIM_CHANNEL_2); // 2.读取整周期时间
__HAL_TIM_SetCounter(&htim4, 0); // 3.定时器计数清零
}
}
文章来源:https://www.toymoban.com/news/detail-643353.html
占空比%:TempPIpre *100 / TempPIpul
周期T: TempPIpul * 10us
频率f: 1 / T
文章来源地址https://www.toymoban.com/news/detail-643353.html
到了这里,关于STM32 HAL 检测PWM频率/占空比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!