This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我尝试使用以下代码通过 F28069M Launchpad 生成 PWM 信号。 我想在不使用比较寄存器的情况下生成50%的占空比。 但是、下面的代码无法按预期工作。 我缺少什么?
空 InitEPwmTimer()
{
InitEPwm3Gpio();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;
EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//向上计数
EPwm3Regs.TBPRD = 100;// ePWM 周期
EPwm3Regs.TBPHS.ALL = 0x00000000;
// EPwm3Regs.AQCTLA.bit.PRD = AQ_TOGGLE;//打开 PRD
// TBCLK = SYSCLKOUT
EPwm3Regs.TBCTL.bit.HSPCLKDIV=1;
EPwm3Regs.TBCTL.bit.CLKDIV = 0;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;
}
Andrew、
我强烈建议从 C2000Ware 中的一个示例开始。 尽管它将使用 CMPx 寄存器、但它也会为您执行所有小任务、例如设置 GPIO 配置、PLL 和系统时钟。
完成此操作后、您应该能够使用 AQ_TOGGLE 设置、正如您在上面所做的那样、以达到50%的占空比。 请注意、您的周期将比预期的长、因为您仅在每个周期切换 PWM 信号一次。
对于上述调试、确保模块时钟被启用、TBCTR 正在计数、确保 AQCTLA 位被正确写入(现在代码看起来被注释掉)
此外、请确保您观察到正确的 PWM、GPIO 和 LaunchPad 引脚、这些引脚很容易出错、并且会引起很多混淆。
此致、
Cody