void Startup_Init(void) { } typedef void (*jump_callback)(void); int jump_app(int app_addr) { int jump_addr; jump_callback cb; //if (((*( int*)app_addr) & 0x20000000 ) == 0x20000000) { jump_addr = *(int*) (app_addr + 4); //ResetHandler cb = (jump_callback)jump_addr; //__set_MSP(*(uint32_t*)app_addr); /* __asm("LDR R0, =__STACK_TOP",) __asm("LDR R0, [R0]") __asm("MSR MSP, R0") __asm("nop"); */ cb(); return 1; } cb(); return 0; } void Watchdog_Disable(void) { } int main(void) { jump_app(0x00040000); while(1){}; }