void Init_PWM1(void)
{
LPC_PINCON->PINSEL7 |= (3<<18); // P3.25
LPC_PWM1->CTCR=0; //工作于定时器模式
LPC_PWM1->PR=4; //预分频比例为1:5
LPC_PWM1->PC=0;
LPC_PWM1->TC=0;
LPC_PWM1->MR0=PCLK0/10000-1; //配置PWM频率为10kHz
LPC_PWM1->MR2=(LPC_PWM1->MR0+1)*(15)/100-1; //配置PWM1.2的PWM占空比为15
LPC_PWM1->LER=(1<<2)|(1<<0); //锁存PWM值并立即生效
LPC_PWM1->MCR=0x02; //LPC_PWM1->TC计数到LPC_PWM1->MR0的时候TC复位
LPC_PWM1->PCR=(1<<10)|(0<<2); //配置PWM1.2为单边输出,并使能
LPC_PWM1->TCR=(1<<3)|(1<<0); //使能PWM1定时器并使能PWM功能
}
观察上图,通过调整占空比(MR2寄存器)可以调整占空比;
通过PR寄存器可以在不改变占空比的情况下调整PWM的频率;
如果要想动态修改PWM的占空比,可以随时调用如下2句:
LPC_PWM1->MR2=(LPC_PWM1->MR0+1)*duty/100-1; //duty就是占空比
LPC_PWM1->LER=(1<<2)|(1<<0); //锁存PWM值并立即生效