采用stm32F103VET6 512K Flash 64SRAM
1.跳转程序(BootLoader)
jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址)
MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)jump2app(); //跳转到APP.
2.用户程序(APP)
在main函数开头加入NVIC_SetVectorTable(0x08000000,0x37000);
项目配置如下
如出现以下问题,跳转在莫名其妙的地址,BEAB BKPT 0XAB,勾选UseMicroLIB,可解决问题
3.由于在BootLoader中禁止中断,__disable_irq();
所以在用户程序初始化完成后加入 __enable_irq();即可正常运行