1 在InitSysCtrl()之后打开PWM外设时钟
CpuSysRegs.PCLKCR2.bit.EPWM1=1;
2 初始化PWM1的输出引脚
设置GPIOA0 A1的引脚复用到EPWM1A B。
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // Configure GPIO0 as EPWM1A
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // Configure GPIO1 as EPWM1B
3 停止PWM时钟后初始化PWM1 然后再选通PWM时钟
(1)CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;//停止PWM时钟
(2)设置PWM寄存器
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // 计数模式向上计数
EPwm1Regs.TBPRD = 2000; //设置定时器周期为2000
//TBCLK = EPWMCLK /(HSPCLKDIV×CLKDIV)。
/*TBCLK 时基时钟。
这是EPWM 时钟的预分频版本(EPWMCLK),由ePWM 中的所有子模块使用。此时钟确定时基计数器递增或递减的速率。*/
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2;//设置预分频为2分
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2;//设置分频为2分
//设置影子寄存器加载为零
//
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
//
// 设置对比值
//
EPwm1Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA; // Set compare A value
//设置动作当计数等于0的时候为高电平,计数等于对比值时为低电平
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // Set PWM1A on Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;