boot跳转APP的程序
目录
Flash分区设定:
参考手册的分区:
工程文件地址设置:
Bootloader工程文件:
Debug -> settings
测试的APP程序工程文件:
他的34000是这么计算得来的:
Bootloader跳转程序:
这里跳转之前__disable_irq();关闭了所有中断
在APP程序需要调用__enable_irq();重新启用中断
而且调用__enable_irq();之前这些中断初始化已经完成,能进入
typedef void (*pFunction)(void);
pFunction Jump_To_Application;
#define ApplicationAddress 0x0800C000
#define FMC_UPDATE_INFO_ADDR 0x08040000 //标志
__asm void MSR_MSP (uint32_t ulAddr)
{
MSR MSP, r0 //set Main Stack value
BX r14
}
void app_jump()
{
uint32_t JumpAddress;
__disable_irq();// 禁用所有中断
JumpAddress = *(__IO uint32_t*)(ApplicationAddress + 4);
/* Jump to user application */
Jump_To_Application = (pFunction) JumpAddress;
MSR_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
这里我没有设置这个标志,所以会直接跳转APP
APP程序:
进APP程序之前需要添加一些语句,防止不能进中断: