【STM8教程】 PWM STM8的C语言编程(14)-- PWM 在单片机应用系统中,也常常会用到PWM信号输出,例如电机转速的控制。现在很多高档 的单片机也都集成了PWM功能模块,方便用户的应用。 对于PWM信号,主要涉及到两个概念,一个就是PWM信号的周期或频率,另一个就是PWM信 号的占空比。例如一个频率为1KHZ,占空比为30%,有效信号为1的PWM信号,在用示波器 测量时,就是高电平的时间为300uS,低电平的时间为700uS的周期波形。 在单片机中实现PWM信号的功能模块,实际上就是带比较器的计数器模块。首先该计数器 循环计数,例如从0到N,那么这个N就决定了PWM的周期,PWM周期=(N+1)*计数器时钟 的周期。在计数器模块中一定还有一个比较器,比较器有2个输入,一个就是计数器的当 前值,另一个是可以设置的数,这个数来自一个比较寄存器。当计数器的值小于比较寄 存器的值时,输出为1(可以设置为0),当计数器的值大于或等于比较寄存器的值时, 输出为0(也可设置为1,与前面对应)。 了解了这个基本原理后,我们就可以使用STM8单片机中的PWM模块了。下面的实验程序首 先将定时器2的通道2设置成PWM输出方式,然后通过设置自动装载寄存器TIM2_CCR2,决 定PWM信号的周期。在程序的主循环中,循环修改占空比,先是从0逐渐递增到128,然后 再从128递减到0。 当把下面的程序在ST的三合一板上运行时,可以看到发光二极管LD1逐渐变亮,然后又逐 渐变暗,就这样循环往复。如果用示波器看,可以看到驱动LD1的信号波形的占空比从0 变到50%,然后又从50%变到0。 同样还是利用ST的开发工具,生成一个C语言程序的框架,然后修改其中的main.c,修改 后的代码如下。 // 程序描述:用PWM输出驱动LED #include "STM8S207C_S.h" void CLK……