STM32的PWM功能很强悍,但是对于刚从51转过来朋友估计会很不习惯,为了加深对STM32的PWM功能的了解,测试了一下不同PWM配置下的波形,在这里记录下。用的是STM32F051的TIM1的第一通道。
工具/原料
Keil
Saleae Logic
TIM_OCIdleState测试
1、配置timeOcInitTypeDef.TIM_OCIdleState = TIM_OCId盟敢势袂leState_Reset;t足毂忍珩imeOcInitTypeDef.TIM_OCNIdleState = TIM_OCIdleState_Reset;即N和P空闲都是Reset,输出电平在PWM空闲时都为低。
2、配置timeOcInitTypeDef.TIM_OCIdleState = TIM_OCId盟敢势袂leState_Set;tim髫潋啜缅eOcInitTypeDef.TIM_OCNIdleState = TIM_OCIdleState_Reset;即P空闲为Set,N空闲为Reset,按理P极在空闲时应该输出高才对,可是实测却还是低,这个就不懂了!
PWM1和PWM2
1、设置为PWM1时的波形,可以看到P极的占空比很小。
2、设置为PWM2时的波形,可以看到P极的占空比变得很大,刚好是PWM1是的相反值。结合规格书,可知PWM1和PWM2在效果上来看可以认为是极性相反。
极性测试
1、两张图,一张P和N的极性都是High,另一张P极性为Low,N极性为High,两个图显示的PWM一个是互补的,另一邗锒凳审个是一样的,由此可知TIM_OCNPolarity和TIM_OCPolarity决定了PWM输出的极性,当P和N设置成相反极性是他们的输出波形是一样的。
TIM_OutputNState和TIM_OutputState
1、设置timeOcInitTypeDef.TIM_OutputNState = TIM_OutputNState_Disable;后N极的PWM波形不见了,可知TIM_OutputNState控制N极的输出。
2、设置timeOcInitTypeDef.TIM_OutputState = TIM_OutputState_Disable;后P极的PWM波形依然好好的,这个就不懂了,说好的控制P极的输出使能呢?