在论坛找到了。。。。。。。。。
void T16B0M0_PWM_Init(void)
{
if((duty>=100)&&(duty<=0))return;//如果占空比值不是1~99中的数,退出函数
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); //使能TIM16B0时钟
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟
LPC_IOCON->PIO0_8 &= ~0x07;
LPC_IOCON->PIO0_8 |= 0x02; //把P0.8脚设置为MAT0
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟,不关也可以,关了省电,还可以提高程序稳定性
LPC_TMR16B0->TCR = 0x02; //复位定时器(bit1:写1复位)
LPC_TMR16B0->PR = SystemAHBFrequency/1000000-1; //1微秒TC+1
LPC_TMR16B0->PWMC= 0x01; //设置MAT0为PWM输出引脚
LPC_TMR16B0->MCR = 0x02<<9; //设置MR3匹配时复位TC,也就是把MR3当做周期寄存器
LPC_TMR16B0->MR3 = cycle; //设置周期
LPC_TMR16B0->MR0 = cycle/100*(100-duty); //设置占空比
LPC_TMR16B0->TCR = 0x01; //启动定时器
}
void T16B0M0_PWM_SET(void)
{
if((duty>=100)&&(duty<=0))return;//如果占空比值不是1~99中的数,退出函数
LPC_TMR16B0->MR0 = cycle/100*(100-duty); //设置占空比
|