STM32启动模式

M3/M4/M7内核复位后,做的第一件事:

  1. 从地址0x00000000处取出堆栈指针MSP的初始值,该值就是栈顶地址。
  2. 从地址0x00000004处取出程序计数器指针PC的初始值,该值是复位向量。
    在这里插入图片描述
    芯片厂商可能会把0x00000000和0x00000004地址映射到其它的地址!

STM32启动模式

在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。
在这里插入图片描述
在这里插入图片描述
当使用仿真器下载程序时,用第一种模式即可。
当使用串口下载程序时,用第二种模式。

STM32启动过程

在这里插入图片描述

  1. 初始化MSP:从0x08000000获取
  2. 初始化PC:从0x08000004获取
  3. 设置堆栈大小:Heap_size、Stack_size
  4. 初始化中断向量表:__Vectors
  5. 调用初始化函数:(可选的),如调用:SystemInit函数
  6. 调用__main:标准C库函数,执行一系列设置,最终调用main函数

Reset_Handler定义在启动文件中,由汇编语言编写

在这里插入图片描述

堆栈简介

内存 作用
编译器自动分配和释放,存放函数参数,局部变量等
程序员分配和释放,如malloc、calloc、realloc等

函数局部变量较多,嵌套关系复杂时,需加大栈大小(Stack_size)。

STM32启动过程图解

在这里插入图片描述文章来源地址https://uudwc.com/A/v0dWj

原文地址:https://blog.csdn.net/Caramel_biscuit/article/details/131324177

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年06月23日 04:02
C++测试
下一篇 2023年06月23日 04:02