本帖最后由 你好我好大家好! 于 2014-12-11 17:33 编辑 ,我现在也在做stm32驱动BLDC的程序,遇到了两个问题问题, 1,在官方库中所带的输出六步电压的历程中是上下通道都输出pwm的。我想达到的目的是,所有OCx通道根据要求输出pwm波,OCxN要么输出高电平要么输出低电平,既没有pwm输出,这也是stm32手册中的配置,如下图所示,,所以想请教下前辈们怎样配置才能实现啊??、 2,要想达到上面的目的,必须对tim1的OSSR和OSSI位的具体含义清楚的了解,希望前辈们能指点一下,在此先谢谢了 |
我想实现的是如图2.jpg中的那样的波形,step1:l连接T1的通道(OC1)输出pwm,连接T4管的通道(OC2N)输出高电平. step2:l连接T1的通道(OC1)输出pwm,连接T6管的通道(OC3N)输出高电平. step3:l连接T3的通道(OC2)输出pwm,连接T6管的通道(OC3N)输出高电平. step4:l连接T3的通道(OC2)输出pwm,连接T2管的通道(OC1N)输出高电平. step5:l连接T5的通道(OC3)输出pwm,连接T2管的通道(OC1N)输出高电平. step6:l连接T5的通道(OC3)输出pwm,连接T4管的通道(OC2N)输出高电平,即tim1的六路通道中的OCx通道输出pwm波,OCxN通道输出高低电平,不输出pwm波形,也就是1.jpg中虚线下面的波形。
还是自己来回答吧:
对于第一个问题:只要把官方标准库中所带的六步电压历程工程中,令中断函数中上通道的输出模式为 TIM_OCMode_PWM1,互补通道的输出模式改为TIM_OCMode_Active模式就可以实现上通道输出pwm,下同到输出高低电平了。
第二个问题:OSSR位,0:当定时器不工作时,禁止OC/OCN输出(OC/OCN使能输出信号=0);
1:当定时器不工作时,一旦CCxE=1或CCxNE=1,OC/OCN使能并输出无效电平,
然后置OC/OCN使能输出信号=1。
解释:定时器不工作的含义:就是令某一通道失能,即CCxE=0或CCxNE=0。这时一旦当CCxE或CCxNE其中有一个使能时,而另一个失能时,这时失能的通道输出无效电平,使能的通道输出程序中配置的模式。
若有纰漏,欢迎指正!!
我下面说了,安哥参考一下看看又要修正或补充的地方吗
我用STM32F103可以配置出来 但是用STM32F407的就是不行 这两款的配置有什么不一样吗 我看手册是一样的啊
这个问题有很多原因,不现场调试是很难发现问题的
这个问题有很多原因,不现场调试是很难发现问题的
能不能帮忙用STM32F407来配置一下呢 先谢了
你这是大错特错,定时器不工作!= CE=0,楼主是对的。