现象如下: 参考例程,我将cpu1和cpu2的代码烧写入flash,断电重启后,发现CPU1运行正常,但是cpu2却无法运行,在cpu2的main中设置断点,发现没有进入到main函数中,请问我还有哪里没做对吗?cpu1使用2837xD_FLASH_lnk_cpu1.cmd,cpu2使用2837xD_FLASH_lnk_cpu2.cmd 附上代码
CPU1
int main(void)
{
InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开,SYSCLK=200MHz LSPCLK=50MHz
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
InitGpio(); //打开GPIO的LOCK开关,并将所有控制和数据寄存器清零,不包括上拉
DINT; //set INTM
InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE中断向量表,ENPIE=1
EINT;//clr INTM
ERTM;
while(1)
{
DELAY_US(20000); //20ms delay
}
}
CPU2
int main(void)
{
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开
// InitFlash();
DINT; //set INTM
InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE中断向量表,ENPIE=1
EINT; //clr INTM
ERTM;
while(1)
{
DELAY_US(20000); //20ms delay
}
}
HeiHei:
cpu2 不用再配时钟了吧
现象如下: 参考例程,我将cpu1和cpu2的代码烧写入flash,断电重启后,发现CPU1运行正常,但是cpu2却无法运行,在cpu2的main中设置断点,发现没有进入到main函数中,请问我还有哪里没做对吗?cpu1使用2837xD_FLASH_lnk_cpu1.cmd,cpu2使用2837xD_FLASH_lnk_cpu2.cmd 附上代码
CPU1
int main(void)
{
InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开,SYSCLK=200MHz LSPCLK=50MHz
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
InitGpio(); //打开GPIO的LOCK开关,并将所有控制和数据寄存器清零,不包括上拉
DINT; //set INTM
InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE中断向量表,ENPIE=1
EINT;//clr INTM
ERTM;
while(1)
{
DELAY_US(20000); //20ms delay
}
}
CPU2
int main(void)
{
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开
// InitFlash();
DINT; //set INTM
InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE中断向量表,ENPIE=1
EINT; //clr INTM
ERTM;
while(1)
{
DELAY_US(20000); //20ms delay
}
}
FENG SHE:
回复 HeiHei:
是的,里面有宏开关,CPU2里不做任何处理的。我不知道为什么烧下去,cpu2就是不运行,进不了main,我用ccs烧写的
现象如下: 参考例程,我将cpu1和cpu2的代码烧写入flash,断电重启后,发现CPU1运行正常,但是cpu2却无法运行,在cpu2的main中设置断点,发现没有进入到main函数中,请问我还有哪里没做对吗?cpu1使用2837xD_FLASH_lnk_cpu1.cmd,cpu2使用2837xD_FLASH_lnk_cpu2.cmd 附上代码
CPU1
int main(void)
{
InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开,SYSCLK=200MHz LSPCLK=50MHz
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
InitGpio(); //打开GPIO的LOCK开关,并将所有控制和数据寄存器清零,不包括上拉
DINT; //set INTM
InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE中断向量表,ENPIE=1
EINT;//clr INTM
ERTM;
while(1)
{
DELAY_US(20000); //20ms delay
}
}
CPU2
int main(void)
{
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开
// InitFlash();
DINT; //set INTM
InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE中断向量表,ENPIE=1
EINT; //clr INTM
ERTM;
while(1)
{
DELAY_US(20000); //20ms delay
}
}
Seven Han:
你好,你看下这个帖子:
http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/119287.aspx
里面还有其他的帖子,希望能帮助到你。