2019-07-21 05:12发布
上图告诉我们CCxP是用来控制极性的,默认设置(复位后)为0,也就是高电平有效,而如果设置该位,则为低电平有效。通过实验我发现,这里的有效电平,其实就是在PWM输出的有效电平(匹配时的电平),比如我设置PWM某个时候的比较值为0,此时PWM会输出100%占空比的有效电平,此时,我们可以看到OCx输出是一个固定的电平,这个电平,其实就是你设置的CC1P的状态。当设置OCxP的值为0的时候,100%占空比输出是高电平,当设置OCxP为1的时候,100%占空比输出是低电平。从而控制了输出极性。 在开发板的实验8上稍作修改得到仿真代码,仅仅修改了main函数,如下: //Mini STM32开发板扩展实例 7 //PWM输出 实验 //正点原子@ALIENTEK //2010.12.25
int main(void) { Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化 LED_Init(); //初始化与LED连接的硬件接口  WM_Init(90,0); //不分频。PWM频率=72000/900=8Khz //可以通过注释:TIM3->CCER|=1<<5;这句,来观看结果,此结果完全软件仿真即可看到。 //在波形观察里面新建一个PORTA.7的信号,就能看到修改TIM3->CCER第5位的值产生的结果了。 while(1) { TIM3->CCER|=1<<5; //低电平有效 delay_ms(10); LED0_PWM_VAL=45; delay_ms(10); LED0_PWM_VAL=0; delay_ms(10); LED0_PWM_VAL=45; delay_ms(10); LED0_PWM_VAL=0; TIM3->CCER&=~(1<<5);//高电平有效 delay_ms(10); LED0_PWM_VAL=45; delay_ms(10); LED0_PWM_VAL=0; delay_ms(10); LED0_PWM_VAL=45; delay_ms(10); LED0_PWM_VAL=0; } } 仿真结果如下:
最多设置5个标签!
然后,我们在266页还可以看到图125的通道输出部分框图,如下图所示:
上图告诉我们CCxP是用来控制极性的,默认设置(复位后)为0,也就是高电平有效,而如果设置该位,则为低电平有效。通过实验我发现,这里的有效电平,其实就是在PWM输出的有效电平(匹配时的电平),比如我设置PWM某个时候的比较值为0,此时PWM会输出100%占空比的有效电平,此时,我们可以看到OCx输出是一个固定的电平,这个电平,其实就是你设置的CC1P的状态。当设置OCxP的值为0的时候,100%占空比输出是高电平,当设置OCxP为1的时候,100%占空比输出是低电平。从而控制了输出极性。
在开发板的实验8上稍作修改得到仿真代码,仅仅修改了main函数,如下:
//Mini STM32开发板扩展实例 7
//PWM输出 实验
//正点原子@ALIENTEK
//2010.12.25
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口初始化
LED_Init(); //初始化与LED连接的硬件接口
 WM_Init(90,0); //不分频。PWM频率=72000/900=8Khz
//可以通过注释:TIM3->CCER|=1<<5;这句,来观看结果,此结果完全软件仿真即可看到。
//在波形观察里面新建一个PORTA.7的信号,就能看到修改TIM3->CCER第5位的值产生的结果了。
while(1)
{
TIM3->CCER|=1<<5; //低电平有效
delay_ms(10);
LED0_PWM_VAL=45;
delay_ms(10);
LED0_PWM_VAL=0;
delay_ms(10);
LED0_PWM_VAL=45;
delay_ms(10);
LED0_PWM_VAL=0;
TIM3->CCER&=~(1<<5);//高电平有效
delay_ms(10);
LED0_PWM_VAL=45;
delay_ms(10);
LED0_PWM_VAL=0;
delay_ms(10);
LED0_PWM_VAL=45;
delay_ms(10);
LED0_PWM_VAL=0;
}
}
仿真结果如下:
-------------------------------
“当设置OCxP的值为0的时候,100%占空比输出是高电平,当设置OCxP为1的时候,100%占空比输出是低电平。从而控制了输出极性。”,
就是匹配时,OCx的输出电平就等于设置的OCxP的电平,对吧?
还有那个)OCxREF 到底什么用呢?
-------------------------------
原子哥。。实验8PWM输出中:TIM2->CCMR1|=7<<4; //CH1 WM2模式,TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平
TIM2->CCER|=1<<0; //高电平有效,OC1输出使能,OC1信号输出到对应的输出引脚
//当TIM2->CCR1由0到300,灯由暗变亮
我修改成:TIM2->CCMR1|=7<<4; //CH1 WM2模式,TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平
TIM2->CCER|=3<<0; //低电平有效,
//按照原理应该是当TIM2->CCR1由0到300,灯由亮变暗
//但实际情况确是:一直很亮。。
有点迷惑。。。
十分迷惑。。。
相当迷惑。。。
-------------------------------
你先仿真下吧.
提示:看看占空比.
一周热门 更多>