蓝桥杯——PWM / PWM定时器捕获频率和占空比

STM32 HAL库系列(一)定时器PWM输入捕获模式_️零柒️的博客-CSDN博客_定时器捕获模式

原理图

蓝桥杯——PWM / PWM定时器捕获频率和占空比_第1张图片

在这里插入图片描述具体可以去看pwm原理,这里不多赘述

Cubemx

蓝桥杯——PWM / PWM定时器捕获频率和占空比_第2张图片

一定要设置占空比!!!

蓝桥杯——PWM / PWM定时器捕获频率和占空比_第3张图片

程序里面可以通过调用函数__HAL_TIM_SET_COMPARE(); __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,200);来改变占空比,我们就是通过这一函数来控制电机转速。

学习心得:记得先开HAL_TIM_PWM_Start这个函数,要不然输出不了pwm波

定时器捕获PWM

STM32 HAL库系列(一)定时器PWM输入捕获模式_️零柒️的博客-CSDN博客_定时器捕获模式

唯一不同的是代码,上面连接开了复位模式,获取完CNT的值会自动归0

蓝桥杯——PWM / PWM定时器捕获频率和占空比_第4张图片

1) 当第一次上升沿到达时IC1捕获TIMx_CCR1的值为当前计数值4,IC2不会捕获TIMx_CCR2保持不变,计数器复位从0开始计数。
2) 第一个下降沿到达时IC2捕获TIMx_CCR2的值为2表示脉冲宽度。当上升再次到达时TIMx_CCR1的值就表示脉冲周期了(注意:第一次上升沿捕获的是个随机值)。

我闲的无聊,也试了下复位模式,发现也可以。蓝桥杯——PWM / PWM定时器捕获频率和占空比_第5张图片

这里来说明一下频率和占空比计算的公式:
频率:TIM4在APB1时钟总线上,频率是72M,我们一开始设置的分频比是71(+1),所以我们的定时器计数频率是1M,即计数一次的时间是1/1M。那么我们通过读取的周期计数值计算出周期=TempPIpre*(1/1M),然后频率是周期的倒数,故我们需要的PI频率=1/(TempPIpre*(1/1M))=1M/TempPIpre。
占空比:TempPIpul是高电平计数值,TempPIpre是整个周期的计数值,所以TempPIpul/TempPIpre就是我们的正占空比,这里我TempPIpul*100是将小数显示扩大100倍成百分比显示。
 

注意!!!

记得提前开定时器和定时器中断 

还有需要杜邦线将PWM输出输入接在一起

你可能感兴趣的:(蓝桥杯,单片机)