STM32::startup_stm32f4xx.s(芯片启动流程)

STM32 H7 RT-THREAD boot 跳转 外部flash w25q64 STM32 h7芯片,使用外部flash,通过boot引导到外部flash上执行程序过程 阅读详情

STM32从Flash的启动流程

.s文件:硬件初始化-->复位(Reset_Handler)-->系统初始化SystemInit()-->进入__mainC库函数--> 跳转到main()开始进入C程序。

在这里插入图片描述

1,上电之后先去0x0000 0000地址加载SP指针从地址0x0000 0004加载PC指针,如果是BOOT0引脚为低电平,则指向Flash处执行程序
2,从Flash处也就是0x0800 0000加载栈顶指针SP,从0x0800 0004处加载中断向量表的起始地址PC,也就是复位程序的地址
3,执行复位程序,先执行SystemInit()函数初始化系统时钟,然后执行main()函数

在这里插入图片描述

 

 

 

【32单片机学习】(11)STM32启动过程详解_Godox_user的博客-优快云博客

启动文件详解

STM32之启动文件的详解_stm32启动文件_非常规自我实现的博客-优快云博客

STM32启动流程详解(超全,startup_stm32xx.s分析) 启动模式只决定程序烧录的位置,加载完程序之后会有一个重映射(映射到0x00000000地址位置);真正产生复位信号的时候,CPU还是从开始位置执行。值得注意的是STM32上电复位以后,代码区都是从0x00000000开始的,三种启动模式只是将各自存储空间的地址映射到0x00000000中。 阅读详情

相关推荐

4、stm32F103 启动文件

简介 启动文件名为“ startup_stm32f10x_hd.s”的文件,它里边使用汇编语言写好了基本程序,当STM32 芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起 C 语言的运行环境,所以我们把这个文件称为启动文件。 startup_stm32f10x_hd.s 文件由官方提供,一般有需要也是在官方的基础上修改,不会自己完全重写。该文件从 ST 固件库里面找到,找到该文件后把启动...

imxlw00的专栏 1万+

【STM32启动文件分析】

启动文件(startup file)是指在单片机程序运行时最先执行的一段代码,主要负责初始化芯片内部的寄存器、片外外设的初始化、栈和堆的设置等,为应用程序的正常运行做好准备工作。这意味着在汇编程序中使用的符号或函数不是在当前汇编文件中定义的,而是在其他汇编文件或C代码中定义的。配置系统时钟:启动文件会配置系统时钟,根据芯片的型号和外部晶振的频率,设置CPU时钟、总线时钟和外设时钟。设置堆和栈的初始值:堆和栈是在内存中分配给程序使用的两个区域,启动文件会设置它们的初值和大小。.s或startup_

weixin_45935114的博客 2296

STM32启动文件startup_stm32xx.s中断向量表配置与实战解析

本文深入解析STM32启动文件startup_stm32xx.s中的中断向量表配置原理与实战应用。详细介绍了栈堆初始化、向量表构建、启动模式选择及复位流程,并通过实际案例分享中断无法触发、HardFault调试等常见问题的解决方案,帮助开发者深入理解STM32启动机制。

5f4d3s2a1q的博客 596

STM32启动文件startup_stm32f40xx.s详解

stm32startup_启动文件详解 本文将详细根据代码,逐行解释启动文件。不想看代码的可以跳过,有总结性文字陈述。 汇编语言使用;进行注释 1. 启动文件简介 启动文件的主要功能 1、初始化堆栈指针 SP=_initial_sp 2、初始化 PC指针=Reset_Handler 3、初始化中断向量表 4、配置系统时钟 5、调用 C库函数_main 初始化用户堆栈,从而最终调用 main 函数去到 C的世界 2. 汇编基础 如何在keil中查看汇编指令 MDK->Help-&g

性感的小君君 3923

STM32F4xx时钟配置的三种方法

时钟树 一图胜千言。照例先上一张时钟树的图。 来自:RM0090,STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx参考手册 配置时钟流程 使能外部高速时钟(HSE) 等待HSE时钟信号稳定 配置锁相环PLL 等待PLL就绪 选择PLL作为主时钟源(配置SW) 等待系统时钟切换完成(检查SWS) 配置外设总线的分频系数 ...

booksyhay的专栏 5896

【STM32标准库】从零到一:Stm32F4标准库开发环境搭建全攻略

本文详细介绍了STM32F4标准库开发环境的搭建全流程,包括Keil MDK安装与配置、VS Code环境设置、标准库文件获取与工程模板创建等关键步骤。特别针对新手开发者,提供了从零开始的实用指南和常见问题解决方案,帮助快速掌握STM32F4标准库开发的核心技能。

weixin_30752699的博客 444

STM32F4的启动文件startup_stm32f4xx.s说明

由于我是初学,所有的都是网上学习和个人理解,错误在所难免,这个只是为我自己做的一个笔记(以后发现需要补充的,会不定期补充更新),如果你们看见有错误的地方,多多指教。         软件平台:Keil MDK 4.6         硬件平台:STM32F4 Discovery         启动文件:startup_stm32f4xx.s,版本1.0.0,日期2011.9.30

a5130599的专栏 1万+

STM32Cube_FW_F4_V1.16.0固件库文件配置

启动文件:STM32Cube_FW_F4_V1.16.0\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f429xx.s外设寄存器定义文件:STM32Cube_FW_F4_V1.16.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f429xx.h系...

deepblue7845的博客 1241

STM32启动文件startup_stm32xx.s运行原理汇编详解

对stm32启动文件汇编语言进行讲解

weixin_62123535的博客 3251

STM32F4xx 古法搭建Keil AC6工程(非STM32CubeMX)

本文介绍了手工搭建STM32F4 Keil AC6工程的完整流程。主要内容包括: 工程目录结构设计:创建规范的分类目录,包括MDK-ARM、User、CMSIS、Device等核心文件夹。 关键文件提取:从STM32CubeF4固件包中手工提取必需文件,包括CMSIS内核文件、器件专属头文件、系统时钟文件和AC6专用启动文件。 可选HAL库处理:说明HAL库文件的提取方法,同时指出寄存器开发可跳过此步骤。 Keil工程配置:详细描述如何新建空白工程、设置器件型号、创建工程分组并与本地目录对应。 这种方法摒弃

嗯~~~ 790

基于STM32F4/立创天空星工程创建详细版

在桌面/D盘新建文件夹并命名为“STM32F4工程模板_UTF8”在“STM32F4工程模板_UTF8”工程文件夹里面新建“User”、“System”、“Start”、“Listings”、“Library”、“Hardware”、“Doc”文件夹。

qq_55582408的博客 767

stm32启动过程解析startup启动文件

复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。BOOT0 为专用引脚,而 BOOT1 则与 GPIO 引脚共用。一旦完成对 BOOT1 的采样,相应 GPIO 引脚即进入空闲状态,可用于其它用途。总结:上面的每一种启动方式我都描述了“xxx的起始地址被重映射到了0x00000000地址,从而代码从xxx开始启动”,如下图是STM32F4xx中文参考手册中的图,可以看到类似的表述。

tao_sc的博客 3248

startup_stm32f4xx.s

startup_stm32f4xx.s文件,配合我的学习笔记STM32F4启动文件http://blog.csdn.net/a5130599/article/details/8227591

STM32F4系列单片机库函数模板工程创建

STM32F40_41xxx,USE_STDPERIPH_DRIVER(英文逗号)

panjinliang066333的博客 3315

STM32F405工程模板_STM32F405工程模板_stm32f405_

STM32F405工程模板

别再手动折腾了!PICO Unity SDK 一键配置开发环境保姆级教程(含PDC串流调试)

本文详细介绍了PICO Unity SDK的一键配置功能,帮助开发者快速搭建VR开发环境。通过自动化配置流程,大幅减少手动设置时间,提升开发效率。文章还涵盖了PDC串流调试技巧和常见问题解决方案,是PICO VR开发的实用指南。

weixin_30335575的博客 454

3-STM32启动文件详解

启动文件 文章目录启动文件启动文件简介1--初始化栈指针MSP=_initial_sp。2--初始化复位程序计数寄存器值=Reset_Handler。3--初始化异常/ 中断向量表。4--系统时钟配置。5--C库函数_main初始化用户堆栈的调用。2、文件启动步骤启动代码讲解1--栈(Stack)2--堆(Heap)3--中断向量表4--复位中断服务程序5--异常和中断服务程序6--用户堆栈初始化 启动文件简介 startup_stm32f429_439xx.s是STM32的启动文件 刚开始我一直认为S

南山府的博客 6349

从原理到调试:手把手教你用Matlab解码互补格雷码与相移码(附数据与常见错误排查)

本文详细介绍了如何使用Matlab解码互补格雷码与相移码,涵盖从原理到调试的全过程。通过实际案例和代码示例,帮助读者掌握结构光三维重建中的相位解包裹技术,并提供了常见错误排查与优化建议,提升解码效率与准确性。

weixin_29090917的博客 220

基于STM32标准库配置系统时钟(外部时钟)

本文介绍了STM32F407标准库时钟配置方法。通过分析SystemInit()中的SetSysClock()函数,详细说明了HSE外部晶振(8MHz)通过PLL倍频至168MHz系统时钟的计算过程,包括分频因子M=8、倍频因子N=336以及P=2的设置方法。同时提供了自定义时钟配置函数的实现代码,包含HSE启动、PLL配置、分频设置等关键步骤,并指出通过调整PLL_N参数可实现系统超频(最高216MHz)。文章还简要说明了USB时钟(48MHz)和FLASH等待状态的配置要点。

qq_42054309的博客 2331

【Cubietruck】Qt5.8.0 x64、x86、armhf三个版本的编译安装

一、       Preparation 以下环境配置支持虚拟机和实体机,但是实体机生产效率会相对高一点,实体机编译Qt的速度是虚拟机两倍以上。 若使用虚拟机,推荐使用VirtualBox,开源免费,尽量不要使用Vmware破解版。   Download List   名称 链接 下载项目 OS https://mirro

beatfan的博客 3658

鸿蒙5.0进阶开发:UI开发-不依赖UI组件的全局自定义弹出框 (openCustomDialog)(推荐)

本文介绍通过入参形式为ComponentContent创建自定义弹出框............

AyomQAQ的博客 1850

stm32f4移植ucosii

前些时候把ucosii移植到stm32f4上,记录一下过程。 移植参考了《STM32F407全套资料》 移植实现的功能:在ucosii系统下驱动lcd! 具体的原理,可以去看看  Ucos中文书-邵贝贝、任哲-嵌入式实时操作系统μCOS-II原理及应用 首先去这个网站下载源码 http://micrium.com/downloadcenter/ 解压源码包,移植

wzs298的专栏 9834

Redis Lua引擎UAF漏洞CVE-2025-49844深度剖析与复现实践

内存安全是软件系统稳定性的基石,其核心原理在于确保程序对内存的访问始终处于合法、受控的状态。在C/C++等手动管理内存的语言中,Use-After-Free(释放后使用)是一种典型的高危内存安全漏洞,它源于已释放的内存区域仍被程序指针引用,导致数据混乱或程序崩溃。这类漏洞的技术价值在于其往往能突破高级语言的安全边界,直接威胁进程本身,危害等级极高,常见于数据库、浏览器等核心基础设施。在Redis这样的高性能内存数据库中,其内置的Lua脚本引擎为复杂操作提供了强大支持,但同时也引入了沙箱环境下的复杂内存对象生

weixin_42530732的博客 365
上一篇: 问题记录::vscode设置问题
下一篇: 电机控制::标幺化(数学模型标幺化计算)
逍遥_xiaoyao
博客等级 码龄6年 286粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值