EPWMxB输出问题,见代码的红色部分:
void EPwmSetup()
{
InitEPwm1Gpio();
//InitEPwm();
EPwm1Regs.TBSTS.all=0;
EPwm1Regs.TBPHS.half.TBPHS=0;
EPwm1Regs.TBCTR=0;//初始时基计数寄存器TBCTR
EPwm1Regs.CMPCTL.all=0x50; // Immediate mode for CMPA and CMPB
EPwm1Regs.CMPA.half.CMPA =400;//400; //动作值,比较值,TRCTR与CMPA比较,调CMPA,调占空比大小
EPwm1Regs.CMPB=0;
EPwm1Regs.AQCTLA.all=0x60; // 00-无动作,01-清除(是输出为低),10-置位(使输出为高),11-信号反转
EPwm1Regs.AQCTLB.all=0;//为什么AQCTLB为0,EPWMxB也会有输出,况且与EPWMxA一模一样
EPwm1Regs.AQSFRC.all=0;
EPwm1Regs.AQCSFRC.all=0;
EPwm1Regs.DBCTL.all=0x3; // EPWMxB is inverted
//POLSE=10,主高互补(AHC)模式,EPWMxB反相,EPWMxA不变
EPwm1Regs.DBRED=0;
EPwm1Regs.DBFED=0;
EPwm1Regs.TZSEL.all=0;
EPwm1Regs.TZCTL.all=0;
EPwm1Regs.TZEINT.all=0;
EPwm1Regs.TZFLG.all=0;
EPwm1Regs.TZCLR.all=0;
EPwm1Regs.TZFRC.all=0;
EPwm1Regs.ETSEL.all=0; // Interrupt when TBCTR = 0x0000
EPwm1Regs.ETFLG.all=0;
EPwm1Regs.ETCLR.all=0;
EPwm1Regs.ETFRC.all=0;
EPwm1Regs.PCCTL.all=0;
EPwm1Regs.TBCTL.all=0x0010+TBCTLVAL;// Enable Timer,CLKDIV=000,1分频,HSPCLKDIV=000,1分频
//TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)
//CTRMODE =10,递增递减计数模式
EPwm1Regs.TBPRD= SP; //7500,TBPRD为决定频率的寄存器 T=(1/TBCLK)*TBPRD*2=[1/(150*10^6)]*7500*2=100us
}