代码改变世界

stm32定时器输出移相PWM(非主从模式)

2019-04-27 21:41  斑鸠,一生。  阅读(6931)  评论(1编辑  收藏  举报

背景:由于项目需要,需要stm32输出任意相角度的PWM

前提知识:

                  1、stm32定时器的Tim,一般有多个OC。具体差别根据型号来定。

                  2、定时器的使能,理论上是多个通道同时使能

                 3、TIM_OCInitStructure.TIM_OCMode 的其中一个参数是 TIM_OCMode_Toggle。它的意思是计数达到比较值的时候,输出电平翻转

                 4、由第3点可知,移相占空比固定在了50%

                 5、定时器的计数方式只能为上升计数或者下降计数

                 6、下图为原理图

                      

             (其实,只用设计每个OC的翻转点,就能转化为相应的移相角)

关键代码:

    配置通道输出方式:

       

    配置ARR的值为2000,即一个周期计数值为2000:

         

   配置通道1翻转点:

      

   配置通道2翻转点:

    

  配置通道3翻转点: