stm32定时器的pwm1模式和pwm2模式的区别

本文详细介绍了PWM1和PWM2两种模式的工作原理及输出电平控制方式,并通过实验研究探讨了通道有效电平与输出电平之间的关系。

在参考手册中,对两种模式的描述为

pwm1:

向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为
无效电平;在向下计数时,一旦
TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否
则为有效电平
(OC1REF=1)

pwm2:

在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为
有效电平;在向下计数时,一旦
TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电
平。

这里的一个关键点就是通道有效电平和输出电平有什么关系呢?

通道有效电平与OCxREF有关系,而经过我的实验研究和资料查找,发现这个OCxREF和CCXP共同决定引脚的输出电平,参考博友gtkknd的文章,CC1P与REF相同则输出为1,反之输出为0。而CCXP的极性可以由TIM_OCInitStructure.TIM_OCPolarity这一结构体参量来控制。


### PWM1PWM2模式波形的区别及特点 对于STM8中的PWM输出模式PWM1PWM2的主要区别在于有效电平的定义方式以及计数方向对输出状态的影响。 #### 向上计数时的有效电平 在向上计数的情况下,当定时器寄存器`TIMx_CNT`小于比较捕获寄存器`TIMx_CCR1`时,在PWM1模式下通道处于无效电平;而一旦`TIMx_CNT >= TIMx_CCR1`则进入有效电平。相反地,在PWM2模式中,这种逻辑被反转了——即只要`TIMx_CNT < TIMx_CCR1`就保持有效电平直到超过该阈值才变为无效电平[^1]。 #### 向下计数时的有效电平 而在向下计数的过程中,情况正好颠倒过来。如果当前计数值大于设定好的CCR值,则PWM1会认为这是有效的信号区间并给出相应的高低电压变化;而对于PWM2来说,只有当计数值低于CCR所设限的时候才会被认为是激活的状态[^3]。 为了更直观理解这两种工作原理的不同之处,可以通过下面两个简单的Python脚本模拟它们各自的波形: ```python import numpy as np from matplotlib import pyplot as plt def generate_pwm_waveform(pwm_mode, period=100, duty_cycle=75): """Generate a simple square wave representing the given PWM mode.""" t = np.arange(0, period * 2) % period if pwm_mode == 'PWM1': waveform = (t >= int((period - duty_cycle / 100.0 * period))) & (t <= period) elif pwm_mode == 'PWM2': waveform = (t <= int(duty_cycle / 100.0 * period)) else: raise ValueError('Invalid PWM Mode') return waveform.astype(int) fig, ax = plt.subplots() ax.plot(generate_pwm_waveform('PWM1'), label='PWM1 Waveform', drawstyle="steps-pre") ax.plot(generate_pwm_waveform('PWM2'), label='PWM2 Waveform', linestyle="--", drawstyle="steps-pre") plt.title("Comparison of PWM1 and PWM2 Modes' Output Waveforms") plt.xlabel('Time Steps') plt.ylabel('Output Level') plt.legend(loc='best') plt.show() ``` 此代码片段利用Matplotlib库绘制出了两种不同PWM模式下的理想化方波图形表示法,其中实线代表PWM1的工作特性,虚线对应于PWM2的行为特征。通过观察图表可以发现两者之间明显的相位差及其各自独特的脉冲宽度调制规律[^2]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值