STM32F407VET6学习笔记7:Bootloader跳转APP程序
boot跳转APP的程序
目录
Flash分区设定:
工程文件地址设置:
Bootloader工程文件:
测试的APP程序工程文件:
Bootloader跳转程序:
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 valueBX 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程序之前需要添加一些语句,防止不能进中断: