大家好、我正在学习28379D 一日技术讲座、并已阅读以下代码:
空 InitEPwm1 (空)
{
//设置 TBCLK
EPwm1Regs.TBCTL.bit.CTRMODE = 0;//递增计数
EPwm1Regs.TBPRD =周期1;//设置定时器周期
EPwm1Regs.TBCTL.bit.PHSEN = 0;//禁用相位加载
EPwm1Regs.TBPHS.bit.TBPHS = 0x0000;//相位为0
EPwm1Regs.TBCTR = 0x0000;//清除计数器
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 1;//时钟与 SYSCLKOUT 之比
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
EPwm1Regs.TBCTL.bit.SYNCOSEL = 1;// CTR 上的 SYNC 输出= 0
//将影子寄存器加载设置为零
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;
//设置比较值
EPwm1Regs.CMPA.bit.CMPA = dutyCycle1;//设置比较值
//设置操作
EPwm1Regs.AQCTLA.bit.ZRO = 2;//将 PWM1A 设置为零
EPwm1Regs.AQCTLA.bit.CAU = 1;//在事件 A 上清除 PWM1A、递增计数
}
空 InitEPwm5 (空)
{
//设置 TBCLK
EPwm5Regs.TBCTL.bit.CTRMODE = 0;//向上计数
EPwm5Regs.TBPRD = PWM1_PERIOD;//与 PWM1相同的周期
EPwm5Regs.TBCTL.bit.PHSEN = 1;//启用相位加载
EPwm5Regs.TBPHS.bit.TBPHS =相位偏移5;//相位
EPwm5Regs.TBCTR = 0x0000;//清除计数器
EPwm5Regs.TBCTL.bit.HSPCLKDIV=1;//时钟与 SYSCLKOUT 的比率
EPwm5Regs.TBCTL.bit.CLKDIV = 0;
//将影子寄存器加载设置为零
EPwm5Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm5Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm5Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm5Regs.CMPCTL.bit.LOADBMODE = 0;
//设置比较值
EPwm5Regs.CMPA.bit.CMPA = dutyCycle5;//设置比较值
//设置操作
EPwm5Regs.AQCTLA.bit.ZRO = 2;//将 PWM1A 设置为零
EPwm5Regs.AQCTLA.bit.CAU = 1;//在事件 A 上清除 PWM1A、递增计数
}
据说 EPWM5同步输入来自 EPWM1 SYNCOUT、但我不理解。 从下图中可以看到、EPWM5同步输入只能来自 EPWM4 SYNCOUT、而 EPWM4同步输入由 SYNCSELEPWM4SYNCIN 在 EPWM1SYNCOUT、EXTMSYNCIN1和 EXTMSYNCIN2中选择。