我采用F28m35H52C的开发板,实验双核EPWM驱动,C2000的主函数如下:
void main(void)
{
InitSysCtrl();
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
InitFlash();
#endif
InitGpio();
InitEPwm1Gpio();
GPIO_CNF();
Led1 = 1;// turn off
LED Led2 = 1;
DINT;
InitPieCtrl(); // Disable CPU interrupts and clear all CPU interrupt flags:
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.EPWM1_INT = &EPWM1_ISR;
EDIS;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
PWM1_CNF();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
IER |= M_INT3;
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
nInvert = 0;
pwmst = 0;
swdet = 0;
long delay;
for(;;)
{
Led1 = 0;
for(delay = 0; delay < 500000; delay++)
{
if(!swdet)
{
if ( mBtn1)
{ swdet=~0; }
}
else
{
if (!mBtn1)
{ swdet=0; }
}
}
Led1 = 1;
for(delay = 0; delay < 500000; delay++)
{
if(!swdet)
{
if (mBtn1)
{ swdet=~0; }
}
else
{
if (!mBtn1)
{ swdet=0; }
}
}
if(swdet && mBtn1)
{
if(pwmst)
{
Led2 = 1;
EPwmOff();
pwmst = 0;
}
else
{
Led2 = 0;
EPwmOn();
pwmst = ~0;
}
}
}
}
采用在线Debug方式程序工作正常,但是离线Flash启动不正常,请大虾帮看一下是什么地方设置的不对。M3部分应该没问题可以从Flash启动,并且不改变M3程序,C28装载Bliky例程,工作正常,可以从Flash启动。板上的SW1和SW3已经设置好了。SW1开关都打向下,SW3在下载后打向上。