STM32笔记 (十二)利用高级定时器产生PWM

本文介绍了STM32中使用高级定时器产生PWM的原理和方法,包括PWM的占空比和周期计算,以及如何通过设置定时器参数实现PWM波形的时间控制。并给出了编程步骤。
摘要由CSDN通过智能技术生成

PWM原理简介

脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用
微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽
度的控制,脉宽调制也叫占空比
在这里插入图片描述
这个图中阐述了利用高级定时器产生PWM的原理,其中

  • ARR是自动重装载寄存器(TIMx_ARR)的值
  • CNT是定时器计数器当前的值
  • CCRx是捕获/比较寄存器 x(TIMx_CCRx)的值
    每经过一次定时器时钟周期就会+1,通过设置定时器的输出模式,可以实现,当计数器的值CNT,小于设定的CCRx的值时,输出低电平大于时就输出高电平

PWM波的占空比和周期

在这里插入图片描述
可以通过改变CCRx的值来改变占空比,改变ARR的值来改变周期

  • CCRx 》占空比
  • ARR 》周期,也就是溢出时间
    计算公式为:Tout= ((arr+1)*(psc+1))/Tclk;
    Tclk为时钟周期,psc为时钟分频因子

PWM波形时间计算

向上计数时,如果此时设置的模式为当计数器的值小于CCRx的值时,输出高电平,也是PWM1模式(可以通过TIMx_CCMR1的OCxM位来配置PWM模式)

  • 假设psc分频设置成71,arr的值设置成4999,由公式Tout= ((arr+1)*(psc+1))/Tclk得Tout=5ms
  • 这时候我们又能知道计数器每一次计数的时间为1us
    (相当于把公式Tout= ((arr+1)*(psc+1))/Tclk里的arr的值取0所算出来的时间)
  • 如果要使PWM输出高电平的时间为2.5ms的话,经过计算这时候CCRx的值就要设置成2500

PWM程序

编程步骤:

在这里插入图片描述代码:

#include "stm32f10x.h"
#include "bsp_systick.h"

void TIM8_PWM_Conf
  • 12
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值