2# vigia
1、我也不确定到底有没有跳到应用程序,以下是代码,反应我单步调试时,程序执行到“Jump_To_Application();“语句后,就跑到USB中断里面去了。
2、程序中“USER_FLASH_START”是我的应用程序首地址。
另外中断向量表地址没有重新设,我看网上别人用的时候好像也没有重新设。
3、跳转之前在哪里屏蔽中断?跳转之后又在哪里设呢?
if (DFU_Button_Read() != 0x00)
{ /* Test if user code is programmed starting from address 0x8003000 */
if (((*(vu32*)USER_FLASH_START) & 0x2FFF0000 ) == 0x20000000)
{ /* Jump to user application */
JumpAddress = *(vu32*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__MSR_MSP(*(vu32*) ApplicationAddress);
Jump_To_Application();
}
} /* Otherwise enters DFU mode to allow user to program his application */
|