STM32如何跳转到指定地址执行程序
Posted Mculover666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32如何跳转到指定地址执行程序相关的知识,希望对你有一定的参考价值。
跳转代码
void boot_jump_to_run(uint32_t addr)
uint32_t jmp_addr;
/* Check if user code is programmed starting from address addr */
if (((*(uint32_t *)addr) & 0x2FFE0000) == 0x20000000)
/* Jump to user application */
jmp_addr = *(uint32_t *)(addr + 4);
/* Initialize user application's Stack Pointer */
__set_MSP(*(uint32_t *)addr);
((void (*)(void))jmp_addr)();
跳转原理
① 使用__set_MSP
修改栈顶指针sp;
② 指定地址+4得到下一条指令的地址,将此地址转换为函数指针,执行该函数即跳转。
以上是关于STM32如何跳转到指定地址执行程序的主要内容,如果未能解决你的问题,请参考以下文章
关于STM32 KEIL MDK环境下,程序在RAM中调试的问题
如何在 STM32 F072 的软件中跳转到引导加载程序(DFU 模式)?