Bootloader跳转APP代码流程

一.上电后的初始化

1.单片机引导flash启动

可参考这个链接
https://blog.csdn.net/zlf19910726/article/details/127306237

2.从flash起始地址取出MSP的初始值,用于分配栈顶空间

3.从flash起始地址+4的地址取出值赋给PC寄存器,这个值是Reset_Handler复位函数的地址,然后从这个地址运行程序

4.调用SystemInit

5.调用__main

运行main函数

二.跳转流程

1.指定新的Reset_Handler复位函数的地址

2.指定新的栈指针

3.关闭中断

把所有Bootloader中断关闭,防止影响新的APP

4.跳转复位函数

5.APP初始化代码重新打开所有中断

相关推荐
ACP广源盛139246256732 小时前
一芯搞定多屏高清@ACP#GSV1221 DP 1.4 MST 转 HDMI 1.4 高集成转换芯片
网络·人工智能·嵌入式硬件·计算机外设·电脑
iCxhust2 小时前
在 emu8086 中可以直接编译运行的完整汇编程序,演示数组的定义、遍历、求和、求最大值。
开发语言·前端·javascript·汇编·单片机·嵌入式硬件·算法
LCG元2 小时前
STM32实战:基于STM32F103的SG90舵机控制(PWM精准控制)
stm32·单片机·嵌入式硬件
Deitymoon12 小时前
STM32——蓝牙模块双串口控制led
stm32·单片机·嵌入式硬件
xiangw@GZ15 小时前
智能锁TouchKey的抗干扰设计【2】-软件算法
嵌入式硬件
iCxhust15 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
一起搞IT吧15 小时前
相机Camera日志实例分析之二十:相机Camx【照片后置4800/5000/6400万拍照】单帧流程日志详解
android·嵌入式硬件·数码相机·智能手机
笨笨饿16 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
FreakStudio20 小时前
MicroPython 内核开发者直接狂喜!这个 Claude 插件市场,把开发全流程做成了「对话式外挂」
python·单片机·嵌入式·面向对象·并行计算·电子diy