附PWM0_CH0_Init()和PWM0_CH2_Init()初始化代码。
void PWM0_CH0_Init(void)
{
//1-复位PWM1
SYS_ResetModule(PWM0_RST);
//2-设置PWM计数器工作模式&预分频器
//设置预分频器。分频比1+1=2,144MHz/2=72MHz
PWM0->CLKPSC0_1 = 1;
//设置向上计数模式&计数器自动重载
PWM0->CTL1 &= ~(0x00000001 << (16+0)); //计数器设置为自动重载模式
PWM0->CTL1 &= ~(0x00000003 << (2 * 0)); //设置向上计数模式
//设置计数最大周期PERIOD
(PWM0)->PERIOD[0] = 0xFFFF; //计数器最大值设置为0xFFFF
//3-设置捕捉工作模式&使能相应管教
//使能PWM输入捕捉, PWM通道捕捉功能的输入来自相关的复用管脚。
PWM0->CAPINEN |= (0x00000001 << 0);
//使能捕捉功能。当检测到输入信号的上升/下降沿时锁存PWM计数器值并保存到RCAPDAT(向上锁存)和FCAPDAT(向下锁存)。
PWM0->CAPCTL |= (0x00000001 << 0);
//使能上升沿捕捉重载计数器
PWM0->CAPCTL |= (0x00000001 << (16+0));
//4-中断使能
//CAPIEN,使能上升沿锁存中断
PWM0->CAPIEN |= (0x00000001 << 0);
//INTEN0,使能周期点中断(计数器溢出中断)
// (PWM0)->INTEN0 |= (PWM_INTEN0_PIEN0_Msk << 2); //暂不使能计数器溢出中断,用不到
//使能NVIC中断
NVIC_EnableIRQ(PWM0P1_IRQn);
//5-计数器使能
//CNTEN,PWM计数器和时钟分频器开始工作
PWM0->CNTEN |= (0x00000001 << 0);
}
void PWM0_CH2_Init(void)
{
//1-复位PWM1
SYS_ResetModule(PWM0_RST);
//2-设置PWM计数器工作模式&预分频器
//设置预分频器。分频比1+1=2,144MHz/2=72MHz
PWM0->CLKPSC2_3 = 1;
//设置向上计数模式&计数器自动重载
PWM0->CTL1 &= ~(0x00000001 << (16+2)); //计数器设置为自动重载模式
PWM0->CTL1 &= ~(0x00000003 << (2 * 2)); //设置向上计数模式
//设置计数最大周期PERIOD
(PWM0)->PERIOD[2] = 0xFFFF; //计数器最大值设置为0xFFFF
//3-设置捕捉工作模式&使能相应管教
//使能PWM输入捕捉, PWM通道捕捉功能的输入来自相关的复用管脚。
PWM0->CAPINEN |= (0x00000001 << 2);
//使能捕捉功能。当检测到输入信号的上升/下降沿时锁存PWM计数器值并保存到RCAPDAT(向上锁存)和FCAPDAT(向下锁存)。
PWM0->CAPCTL |= (0x00000001 << 2);
//使能上升沿捕捉重载计数器
PWM0->CAPCTL |= (0x00000001 << (16+2));
//4-中断使能
//CAPIEN,使能上升沿锁存中断
PWM0->CAPIEN |= (0x00000001 << 2);
//INTEN0,使能周期点中断(计数器溢出中断)
// (PWM0)->INTEN0 |= (PWM_INTEN0_PIEN0_Msk << 2); //暂不使能计数器溢出中断,用不到
//使能NVIC中断
NVIC_EnableIRQ(PWM0P1_IRQn);
//5-计数器使能
//CNTEN,PWM计数器和时钟分频器开始工作
PWM0->CNTEN |= (0x00000001 << 2);
}
|