调节占空比后,输出电压怎么就变革了呢?可以用等效面积法来阐明,例如在1ms周期里,满占空比时输出电压为12V,50%占空比时(即高低电平各占韶光为0.5ms)高电平在全体周期的面积只有原来的1/2了,此时输出电压就等效为121/2=6V,那么通过调节不同的占空比,也就实现了输出电压调节。如图:
那STM32中是怎么天生PWM波的呢?时钟是芯片的心脏,没有时钟,芯片便是一块“废物”,有了时钟,芯片才能井井有条的事情,那时钟跟我们要讲的PWM有什么关系呢?请看下图,STM32内部的定时器框图,看看它是如何天生PWM的。
方框内部的CNT Counter计数器会根据输入的时钟沿跳变来进行递加/减,时钟的频率决定了计数器递加/减的频率,这个计数器的值同时会和Auto-reload register(掌握周期)、Capture/Compare x register(掌握占空比)进行比较,当与掌握占空比的寄存器值发生匹配时则掌握输出引脚TIMx_CHx发生电平反转,当与掌握周期寄存器值发生匹配时,周期结束,引脚电平置位,再次重复如上动作,就在引脚上输出了变革不同的电平,这个便是我们须要的PWM。
这个定时器模块可以根据软件编程设置出不同的PWM模式,定时器内部CNT Counter可被编程为向上、向下、向上向下运行,我们说的边沿对齐,和中央对齐就要从这个计数办法上切入,下面我们先来看三种不同的计数办法。
1.当CNT被设置为向上计数时,计数器从0递增向上计数到自动重载值(Auto-reload register),然后计数器又回到0,重新开始。
2.当CNT被设置向下计数时,计数器从自动重载值递减向下计数,计数到0,计数器又回到重载值,重新开始。
3.当CNT被设置向上向下计数时,计数器从0递增向上计数到自动重载值,然后计数器从自动重载值递减向下计数,计数到0然后又开始递增向上计数。
那这三种模式和2种PWM又是什么关系呢?PWM是怎么从引脚上输出的呢?请看下图:
1.向上/下计数模式PWM天生(只展示出了向上计数,向下计数同理):
2.向上向下计数模式PWM天生:
上文中提到的向上计数/向下计数,这两种天生PWM的办法,我们常日称为边沿对齐PWM;既向上又向下这种天生PWM的办法,我们称为中央对齐PWM。当然,发生匹配的时候引脚电平如何变革,是变高还是变低,这个可以通过软件编程来设置。
通过PWM调节输出电压,比如可以掌握做呼吸灯,也可以实现电机的调速,不同的调速算法,会用到不同的PWM等等。