STM32启动过程浅析

这篇具有很好参考价值的文章主要介绍了STM32启动过程浅析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MAP文件浅析

MDK编译过程文件(11种)

  • .o:可重定向对象文件,每个.c、.s文件编译后都生成一个.o文件
  • .axf:可执行对象文件,由.o文件链接生成,仿真的时候需要用到此文件
  • .hex:INTEL Hex格式文件,用于下载到MCU运行,由.axf转换而来
  • .map:连接器生成的列表文件,对分析程序存储占用情况非常有用

MAP文件概念和作用

MAP文件是MDK编译代码后,产生的集程序、数据及IO空间的一种映射列表文件。

包括各种.c文件、函数、符号等的地址、大小、引用关系等信息

MAP文件组成

  • 程序交叉引用关心:描述各文件之间函数调用关系
  • 删除印象未使用的程序段:描述工程中未用到而被删除的冗余程序段(函数/数据)
  • 映像符号表:描述各符号(程序段/数据)在存储器中的地址、类型、大小等
  • 映像内存分布图:描述各个程序段(函数)在存储器中的地址及占用大小
  • 映像组件大小:给出整个映像代码(.o)占用空间汇总信息

STM32启动模式(自举模式)

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

  1. 从地址0x0000 0000处取出堆栈指针MSP的初始值,该值就是栈顶地址
  2. 从地址0x0000 0004处取出程序计数器PC的初始值,该值是复位向量
    STM32启动过程浅析,stm32,stm32,嵌入式硬件,单片机
    芯片厂商可能会把这两个地址映射到其它的地址!!

STM32启动模式(F1)

在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。
STM32启动过程浅析,stm32,stm32,嵌入式硬件,单片机

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

STM32启动过程浅析,stm32,stm32,嵌入式硬件,单片机

启动文件介绍

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

Reset_Handler函数介绍

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:表示子程序结束
  • WEAK:弱定义

堆栈简介

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

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

STM32启动过程浅析,stm32,stm32,嵌入式硬件,单片机
堆向上生长,栈向下生长

STM32时钟系统

STM32启动过程浅析,stm32,stm32,嵌入式硬件,单片机
时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波。

STM32启动过程浅析,stm32,stm32,嵌入式硬件,单片机
时钟源、锁相环:HAL_RCC_OscConfig()
系统时钟、总线:HAL_RCC_ClockConfig()
使能外设时钟:__HAL_RCC_PPP_CLK_ENABLE()
扩展外设时钟(RTC/ADC/USB):HAL_RCCEx_PeriphCLKConfig()

F407

STM32启动过程浅析,stm32,stm32,嵌入式硬件,单片机文章来源地址https://www.toymoban.com/news/detail-829614.html

到了这里,关于STM32启动过程浅析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式毕设分享 stm32 RFID智能仓库管理系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(74)
  • stm32嵌入式实验考核

    STM32 实验考核题目 1. 利用 STM32 小板实现:控制外接 LED 灯每隔 3 秒钟亮暗变换,同 时在 PC 机上显示 MCU 的计时时间,MCU 的初始时间由 PC 机 方设置。 2. 利用 STM32 小板实现:利用导线外接 GPIO 口模拟 2 个按键输入, 根据输入组合的四种情况,分别控制三色灯四种流水灯效果

    2024年02月03日
    浏览(53)
  • STM32启动过程浅析

    MDK编译过程文件(11种) .o:可重定向对象文件,每个.c、.s文件编译后都生成一个.o文件 .axf:可执行对象文件,由.o文件链接生成,仿真的时候需要用到此文件 .hex:INTEL Hex格式文件,用于下载到MCU运行,由.axf转换而来 .map:连接器生成的列表文件,对分析程序存储占用情况

    2024年02月20日
    浏览(34)
  • 嵌入式 STM32 通讯协议--MODBUS

    目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议  二、MODBUS通信协议 1、概述 2、MODBUS帧结构  协议描述 3、MODBUS数据模型   4、MODBUS事务处理的定义 5、MODBUS功能码  6、功能码定义   7、MODBUS数据链路层 8、MODBUS地址规则  9、MODBUS帧描述 10、MODBUS两种

    2024年02月11日
    浏览(66)
  • STM32的时钟系统(嵌入式学习)

    时钟是指用于计量和同步时间的装置或系统。时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作,外设部件在时钟的驱动下完成各种工作,例如:串口数据的发送、AD转换、定时器计数等。因此时钟对于计算机系统是至关重要的,通常时钟系

    2024年02月16日
    浏览(50)
  • 嵌入式——新建STM32工程(标准库)

    目录 一、初识标准库 1.CMSIS标准及库层级关系 2.库文件介绍 (1)Libraries文件夹 ①CMSIS文件夹 ②STM32F10x_Std_Periph_Driver文件夹 ③ 在用库建立一个完整的工程时,还需要添加stm32f10x_it.c、 stm32f10x_conf.h 和 system_stm32f10x.c文件 (2)Project文件夹 (3)Utilities文件夹 3.库各文件之间的关

    2024年01月23日
    浏览(59)
  • STM32串口通信详解(嵌入式学习)

    时钟信号在电子领域中是指用于同步和定时电路操作的周期性信号。它在数字系统和通信系统中起着至关重要的作用,用于协调各个组件之间的数据传输和操作。 时钟信号有以下几个重要的方面: 频率:时钟信号的频率是指单位时间内信号周期的数量。它通常以赫兹(Hz)为

    2024年02月09日
    浏览(69)
  • STM32的中断系统详解(嵌入式学习)

    中断是处理器中的一种机制,用于响应和处理突发事件或紧急事件。当发生中断时,当前正在执行的程序会被暂时中止,处理器会跳转到中断处理程序(也称为中断服务例程),对中断事件进行处理。处理完中断后,处理器再返回到被中断的程序继续执行。 中断可以分为内部

    2024年02月12日
    浏览(74)
  • 嵌入式C语言基础(STM32)

    前言:一条混迹嵌入式3年的老咸鱼,想到自己第一次接触到stm32的库函数时,c语言稀碎,痛不欲生的场景,该文章为萌新指条明路。 位操作在嵌入式中常用于直接对芯片的寄存器进行操作,当时作为初学者的我看着一脸懵逼,至于为什么这样修改,下面好好分析一下。  一

    2024年02月02日
    浏览(59)
  • 嵌入式学习笔记——STM32的时钟树

    在之前的所有代码编程的过程中,似乎每次都绕不开一个叫做时钟使能的东西,当时我们是在数据手册上直接看其挂接在那条时钟线上的,那么STM32内部的时钟到底是怎么一个构型呢,本文来对此做一个介绍。 老规矩,一个新的名词出现,首先需要搞清楚它是个啥,下图中对

    2024年02月02日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包