3路PWM波,频率100HZ,周期为10ms,这个应该很简单吧,用定时器进行定时0.1ms中断一次,100次为一循环,这样周期为10ms。相位差和为360,最简单的是,第1个方波比第2个差120,第2个比第3个差120,第3个比第1个差120。也就是说在第0ms第1个方波启动,第3.3333...ms第2个方波启动,6.66666ms第3个方波启动,而到10ms第1个方波第二个周期又开始启动。这只是最简单的,其实只要满足a b c三个方波启动时间刚好加起来等于10ms就可以。
回到定时器,程序你设定3个变量,a b c,其中a b c的初值分别用来表示第1 2 3方波的相位差,判断a b c的范围来确认三个方波的占空比。设置0.1ms中断,变量初值a=0 b=33 c=66每次中断a b c 分别++,当a=100 b=100 c =100,a=0 b=0 c=0。
主函数,设置3个IO口,PWM1 PWM2 PWM3,if(0 注:1、因为a b c初值不同,所以相位差在初值就体现出来了。2、也可不用中断,判断定时器溢出位也可。3、想要更精确可以定时0.01ms,变量设定1000个。
以上也是我自己凭空想的,没实际实验,你可以试试!