STM32F103 PWM配置

时间:2024-12-10 07:03:59

在《STM32F103定时器配置》中我们介绍了PWM的产生原理,本节介绍介绍如何编码实现PWM的输出。

一、PWM相关寄存器

TIMx如果要产生PWM,除了我们上一节提到的如下寄存器:

  • 控制寄存器(TIMx_CR1)
  • DMA/中断使能寄存器(TIMx_DIER)
  • 预分频寄存器(TIMx_PSC)
  • 从模式控制寄存器(TIMx_SMCR)
  • 自动重装载寄存器(TIMx_ARR)
  • 状态寄存器(TIMx_SR)

还需要使用到:

  • 捕获/比较模式寄存器(TIMx_CCM1/2);
  • 捕获/比较使能寄存器(TIMx_CCER);
  • 捕获/比较寄存器(TIMx_CCR1~4);
  • 刹车和死区寄存器(TIMx_BDTR)(只有高级定时器用到)。
1.1 捕获比较模式寄存器(TIMx_CCMR1/2)

捕获/比较模式寄存器一共有两个:

  • TIMx_CCMR1:控制通道1和2;
  • TIMx_CCMR2:控制通道3和4;

这里以 TIMx_CCM1寄存器为例进行介绍:

1.2 捕获/比较使能寄存器(TIMx_CCER)

TIMx_CCER寄存器每4位描述一个通道;

其中:

  • CCxE:输入/捕获x输出使能位,我们需要重点关注;
  • CCxP:输入/捕获x输出极性。
1.3 捕获/比较寄存器(TIMx_CCR1~4)

捕获/比较模式寄存器一共有4个,依次用于描述每一个通道,这里以TIMx_CCR1为例;

1.4 刹车和死区寄存器(TIMx_BDTR)

TIMx_BDTR寄存器需要重点关注位15主输出使能位;

二、PWM生成源码

2.1 PWM初始化步骤

PWM生成配置流程如下:

(1) TIMx时钟使能:通过配置RCC_APB1ENR/RCC_APB2ENR寄存器使能TIMx时钟;

(2) GPIO功能复用:配置GPIO(比如TIM1通道1PA8)为复用功能推挽输出模式;

(3) 配置TIMx时基单元;

  • 配置TIMx_ARR寄存器自动重装载的值;
  • 配置TIMx_PSC频寄存器预分频系数;

(4) 配置PWM相关寄存器;

  • 配置TIMx_CCMRx寄存器:捕获/比较模式选择(CCxS);
  • 配置TIMx_CCRx寄存器;
  • 配置TIMx_CCER寄存器CCxE,输入捕获使能;
  • 设置TIMx_BDTR寄存器位15,使能PWM输出;

(5) 允许TIMx工作:配置TIMx_CR10

(6) 修改TIMx_CCRx寄存器可以改变占空比。

2.2 源码实现
2.3 实现功能