在《STM32参考手册》V10的第266页,图123和图124之间有这么一句话:输出部分产生一个中间波形OCxRef(高有效)作为基准,链的末端决定最终输出信号的极性。
然后,我们在266页还可以看到图125的通道输出部分框图,如下图所示:
然后,我们在266页还可以看到图125的通道输出部分框图,如下图所示:

上图告诉我们CCxP是用来控制极性的,默认设置(复位后)为0,也就是高电平有效,而如果设置该位,则为低电平有效。通过实验我发现,这里的有效电平,其实就是在PWM输出的有效电平(匹配时的电平),比如我设置PWM某个时候的比较值为0,此时PWM会输出100%占空比的有效电平,此时,我们可以看到OCx输出是一个固定的电平,这个电平,其实就是你设置的CC1P的状态。当设置OCxP的值为0的时候,100%占空比输出是高电平,当设置OCxP为1的时候,100%占空比输出是低电平。从而控制了输出极性。
于CCP1和REF电平之间的关系终于有点明白了,但是不确定理解的对不对,如果对了可以供和我一样的初学者参考,如果不对还请谅解。
计数模式为向上:
PWM1:CNT<CCR1 ----->参考电平为(REF=1), 反之参考电平(REF=0)
PWM1:CNT<CCR1 ----->参考电平为(REF=1), 反之参考电平(REF=0)
/********************************************************************/
用MDK的仿真得到的结果:
REF CC1P
PWM1: 1 LOW ==>输出为低电平
0 LOW ==> 输出为高电平
1 High ==> 输出为高电平
0 High ==> 输出为低电平
PWM2与PWM1相同(相同的CCR1),REF应该是相反的。
我的理解:CC1P与REF相同则输出为1,反之输出为0
/********************************************************************/
在PWM实验中,PWM2,CC1P = High
CNT = 900; CCR1 = 0-300;
若CCR1 = 0;则参考为REF = 1; High ==》输出高电平,小灯熄灭状态。
若CCR1 = 300,有1/3占空比的REF = 0;小灯的亮度为不接PWM时亮度的1/3.
由于是0-300之间的变化,呈现呼吸灯的状态。
若讲High调整为Low,看到的现象时从1/3的亮度---->全亮。
***********************************END*********************************
如果有解释不正确的地方,还希望大家能指出。
计数模式为向上:
PWM1:CNT<CCR1 ----->参考电平为(REF=1), 反之参考电平(REF=0)
PWM1:CNT<CCR1 ----->参考电平为(REF=1), 反之参考电平(REF=0)
/********************************************************************/
用MDK的仿真得到的结果:
REF CC1P
PWM1: 1 LOW ==>输出为低电平
0 LOW ==> 输出为高电平
1 High ==> 输出为高电平
0 High ==> 输出为低电平
PWM2与PWM1相同(相同的CCR1),REF应该是相反的。
我的理解:CC1P与REF相同则输出为1,反之输出为0
/********************************************************************/
在PWM实验中,PWM2,CC1P = High
CNT = 900; CCR1 = 0-300;
若CCR1 = 0;则参考为REF = 1; High ==》输出高电平,小灯熄灭状态。
若CCR1 = 300,有1/3占空比的REF = 0;小灯的亮度为不接PWM时亮度的1/3.
由于是0-300之间的变化,呈现呼吸灯的状态。
若讲High调整为Low,看到的现象时从1/3的亮度---->全亮。
***********************************END*********************************
如果有解释不正确的地方,还希望大家能指出。
捕获/比较输出的中间值,和后面的输出极性一起决定OCX的输出。