在《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_CCM1/2
)
捕获/比较模式寄存器一共有两个:
TIMx_CCM1
:控制通道1和2;TIMx_CCM2
:控制通道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
)
二、PWM
生成源码
2.1 PWM
初始化步骤
PWM
生成配置流程如下:
(1) TIMx
时钟使能:通过配置RCC_APB1ENR/RCC_APB2ENR
寄存器使能TIMx
时钟;