文章目录
前言
本实验使用高级定时器输出比较模式下的翻转功能,通过定时器 4 个通道分别输出 4 个 50%占空比、不同相位的 PWM。
实验原理
输出比较模式下翻转功能作用是:当计数器的值等于捕获/比较寄存器影子寄存器的值时,OC1REF 发生翻转,进而控制通道输出(OCx)翻转。通过翻转功能实现输出 PWM 的具体原理如下: PWM 频率由自动重载寄存器(TIMx_ARR)的值决定,在这个过程中,只要自动重载寄存器的值不变,那么 PWM 占空比就固定为 50%。我们可以通过捕获/比较寄存器(TIMx_CCRx)的值改变 PWM 的相位。生成 PWM 的原理如图:
总结:PWM波周期或频率由ARR决定,占空比固定50%,相位由CCRx决定
我们设置固定的 ARR 值为 999,那么 PWM 占空比固定为 50%,通过改变 4 个通道的捕获/比较寄存器(TIMx_CCRx)的值使得每个通道输出的 PWM 的相位都不一样,注意捕获/比较寄存器的值设置范围是: 0 ~ ARR。比如: TIMx_CCR1=250-1, TIMx_CCR2=500-1, TIMx_CCR3=750-1, TIMx_CCR4=1000-1,那么可以得到通道 1~通道 4 输出的 PWM 的相位分别是: 25%、 50%、 75%、 100%。翻转功能输出的 PWM 周期,这里用 T 表示,其计算公式如下:
T= 2*(arr+1)*((psc+1)/ Tclk)
其中:
T: 翻转功能输出的 PWM 周期(单位为 s)。
Tclk: 定时器的时钟源频率(单位为 MHz)。
arr:自动重装寄存器(TIMx_ARR)的值。
psc:预分频器寄存器(TIMx_PSC)的值。
涉及到的寄存器
高级定时器输出比较模式除了用到定时器的时基单元:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、 自动重载寄存器(TIMx_ARR)之外。主要还用到以下这些寄存器:
控制寄存器 1(TIMx_CR1)
上图中我们只列出了本实验需要用的一些位,其中: 位 7(APRE)用于控制自动重载寄存器是否具有缓冲作用,在基本定时器的时候已经讲过,请回顾。 本实验中,我们把该位置 1。
位 4(DIR)用于配置计数器的计数方向, 本实验默认置 0 即可。
位 CEN 位,用于使能计数器的工作,必须要设置该位为 1,才可以开始计数。
捕获/比较模式寄存器 1/2(TIMx_CCMR1/2)
TIM1/TIM8 的捕获/比较模式寄存器( TIMx_CCMR1/2),该寄存器一般有 2 个:TIMx_CCM