STM32启动过程

STM32启动模式(自举模式)

M3/3/7等内核,复位后做的第一件事:

  1. 从地址0x0000 0000处取出栈指针MSP的初始值,该值就是栈顶地址。
  2. 从地址0x0000 0004处取出程序计数器指针PC的初始值,该值是复位向量。

芯片厂商会把0x00000000和0x00000004地址映射到其它的地址。

在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。

STM32启动过程(内部FLASH启动)

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

Reset_Handler函数介绍

c 复制代码
Reset_Handler PROC
	EXPORT Reset_Handler [WEAK]
	IMPORT __main
	IMPORT SystemInit
	LDR R0,=SystemInit
	BLX R0
	LDR R0,=__main
	BX R0
	ENDP

EXPORT:标明全局属性,可被外部调用。

IMPORT:申明来自外部文件,类extern

PROC:表示子程序

ENDP:表示子程序结束

WAEK:弱定义

堆栈简介

  • 栈:编译器自动分配和释放,存放函数参数、局部变量等。
  • 堆:程序员分配和释放,如malloc、calloc、realloc等。

函数局部变量较多,嵌套关系复杂时,需要加大栈大小!

相关推荐
微信153237942439 小时前
离线语音识别 ( 小语种国家都支持)可定制词组
嵌入式硬件
weixin_5088216510 小时前
1ms软延时,不用定时器,stm32
stm32·单片机·嵌入式硬件
月阳羊10 小时前
【无人机】无人机PX4飞控系统高级软件架构
嵌入式硬件·架构·系统架构·无人机
weixin_5088216511 小时前
stm32 主频216MHz,写个ms延时函数,us延时函数
stm32·单片机·嵌入式硬件
华清远见IT开放实验室11 小时前
【新书上市】《STM32嵌入式系统开发—基于STM32CubeMX和HAL库》,高校教学推荐,STM32入门必读书籍!
stm32·单片机·嵌入式硬件·虚拟仿真·必读书籍·高校教学
智木芯语11 小时前
【58】编程技巧:单片机编程命名规范
单片机·嵌入式硬件·嵌入式·#stm32·#stc8
捷配datasheet12 小时前
OP2177运算放大器:高性能模拟信号处理的关键元件
嵌入式硬件·信号处理
逼子格14 小时前
五种音频器件综合对比——《器件手册--音频器件》
嵌入式硬件·音视频·硬件工程师·硬件测试·电子器件·硬件笔试真题·音频器件
niuTaylor16 小时前
STM32平衡车开发实战教程:从零基础到项目精通
stm32·单片机·嵌入式硬件