STM32 HAL库系列(一)定时器PWM输入捕获模式_️零柒️的博客-CSDN博客_定时器捕获模式
原理图
具体可以去看pwm原理,这里不多赘述
Cubemx
一定要设置占空比!!!
程序里面可以通过调用函数__HAL_TIM_SET_COMPARE(); __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,200);来改变占空比,我们就是通过这一函数来控制电机转速。
学习心得:记得先开HAL_TIM_PWM_Start这个函数,要不然输出不了pwm波
定时器捕获PWM
STM32 HAL库系列(一)定时器PWM输入捕获模式_️零柒️的博客-CSDN博客_定时器捕获模式
唯一不同的是代码,上面连接开了复位模式,获取完CNT的值会自动归0
1) 当第一次上升沿到达时IC1捕获TIMx_CCR1的值为当前计数值4,IC2不会捕获TIMx_CCR2保持不变,计数器复位从0开始计数。
2) 第一个下降沿到达时IC2捕获TIMx_CCR2的值为2表示脉冲宽度。当上升再次到达时TIMx_CCR1的值就表示脉冲周期了(注意:第一次上升沿捕获的是个随机值)。
我闲的无聊,也试了下复位模式,发现也可以。
这里来说明一下频率和占空比计算的公式:
频率: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输出输入接在一起