可以用定时器中断的方法获得PWM信号,如定时器定时100US,先让某管脚输出高电平,用一变量A作计数器,中断一次变量加一,中断10次A清0,另设一变量B,数值取1-10,中断程序中比较A和B的值,如果A和 B相等,则将该引脚输出低电平,直到计数器A清0时再输出高电平,就输出了一定占空比的方波
改变B的值,就改变了占空比,缺点频率不能太高,因中断程序执行要花费较长时间,定时器定时不能太短,如定时10US,可能会小于中断程序的执行时间,造成造成PWM 频率低于预想值或程序混乱
若定时100US,中断10次清0,则占空比 变化最小单位就是10%,如果改成中断100次(10MS)清0,虽占空比可以1%为单位改变,但获得的PWM方波频率只有100HZ,所需滤波电容和电感都 会大很多
硬件PWM频率就可以高多了,原理和定时器类似,但时间比较和输出引脚状态翻转 计数器清0都是硬件自动完成的,所产生的PWM方波频率达10KHZ没有问题,且调整幅度可以达1/256