STC15的PWM输出频率计算:
PCA初始化时,PCA_Clock_1T时,频率为系统频率/256。
22.1184M时,PWM为86.4K Hz
我要一个更低的频率怎么做呢?
PCA_Clock_12T 频率也为7.2K,只有降低时钟频率了,最低降为5.5296M的时候,5.5296M/256/12为1.8K。
现在,只能再进行分频了,SYSTEM_CLK_4T(),使系统时钟变为1.3824M,这样,PWM频率为540Hz
程序:
#include "config.h" #include "delay.h" #include "PCA.h" #include "ADC.h" /************* 本地函数声明 **************/ void timer0_int (void) interrupt TIMER0_VECTOR //timer0用来调度定时任务。 { UpdatePwm(PCA0,255-GetADCResult(0)); UpdatePwm(PCA1,255-GetADCResult(1)); UpdatePwm(PCA2,255-GetADCResult(2)); WDT_reset(4);//喂狗 } /**********************************************/ void main(void) { SYSTEM_CLK_4T(); Timer0_16bitAutoReload();//16位模式 Timer0_AsTimer();//定时器模式 Timer0_1T(); TL0 = 0x9A; //设置定时初值1ms TH0 = 0xA9; //设置定时初值 Timer0_InterruptEnable();//使能定时器0 PCA_config(); //PWM配置 InitADC(); //初始化ADC EA = 1;//使能总中断 delay_ms(1); delay_3us(1); delay_us(1); Timer0_Run(); //完成初始化定时器0开始计时 while (1) { } }