从启动程序(BootLoader)跳转到指定地址时(APP)出现问题的解决方法

采用stm32F103VET6   512K Flash 64SRAM

1.跳转程序(BootLoader)

jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址)

MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)

jump2app(); //跳转到APP.

从启动程序(BootLoader)跳转到指定地址时(APP)出现问题的解决方法

2.用户程序(APP)

在main函数开头加入NVIC_SetVectorTable(0x08000000,0x37000);

项目配置如下

从启动程序(BootLoader)跳转到指定地址时(APP)出现问题的解决方法

如出现以下问题,跳转在莫名其妙的地址,BEAB  BKPT 0XAB,勾选UseMicroLIB,可解决问题

从启动程序(BootLoader)跳转到指定地址时(APP)出现问题的解决方法

3.由于在BootLoader中禁止中断,__disable_irq();

所以在用户程序初始化完成后加入 __enable_irq();即可正常运行