stm32之hal库学习(3)---STM32 启动模式分析

news2024/11/26 15:30:29

启动模式

我们知道的复位方式有三种:上电复位,硬件复位和软件复位。当产生复位,并且离开复 位状态后,CM3 内核做的第一件事就是读取下列两个 32 位整数的值:

(1)从地址 0x0000 0000 处取出堆栈指针 MSP 的初始值,该值就是栈顶地址。

(2)从地址 0x0000 0004 处取出程序计数器指针 PC 的初始值,该值指向复位后执行的 第一条指令。下面用示意图表示,如图所示。

        上述过程中,内核是从 0x0000 0000 和 0x0000 0004 两个的地址获取堆栈指针 SP 和程序计 数器指针 PC。事实上,0x0000 0000 和 0x0000 0004 两个的地址可以被重映射到其他的地址空 间。例如:我们将 0x0800 0000 映射到 0x0000 0000,即从内部 FLASH 启动,那么内核会从地 址 0x0800 0000 处取出堆栈指针 MSP 的初始值,从地址 0x0800 0004 处取出程序计数器指针

        PC 的初始值。CPU 会从 PC 寄存器指向的地址空间取出的第 1 条指令开始执行程序,就是开始 执行复位中断服务程序 Reset_Handler。将 0x0000 0000 和 0x0000 0004 两个地址重映射到其他 的地址空间,就是启动模式选择。

        对于 STM32F1 的启动模式(也称自举模式),我们看表 9.1.1 进行分析。

由表可以看到,STM32F1 根据 BOOT 引脚的电平选择启动模式,这两个 BOOT 引脚 根据外部施加的电平来决定芯片的启动地址。(0 和 1 的准确电平范围可以查看 F103 系列数据 手册 I/O 特性表,但我们最好是设置成 GND 和 VDD 的电平值)

(1)内部 FLASH 启动方式

当芯片上电后采样到 BOOT0 引脚为低电平时,0x00000000 和 0x00000004 地址被映射到 内部 FLASH 的首地址 0x08000000 和 0x08000004。因此,内核离开复位状态后,读取内部 FLASH的 0x08000000 地址空间存储的内容,赋值给栈指针 MSP,作为栈顶地址,再读取内部 FLASH的 0x08000004 地址空间存储的内容,赋值给程序指针 PC,作为将要执行的第一条指令所在的 地址。完成这两个操作后,内核就可以开始从 PC 指向的地址中读取指令执行了。

(2)内部 SRAM 启动方式

类似于内部 Flash,当芯片上电后采样到 BOOT0 和 BOOT1 引脚均为高电平时,地址

0x00000000 和 0x00000004 被映射到内部 SRAM 的首地址 0x20000000 和 0x20000004,内核从

SRAM 空间获取内容进行自举。在实际应用中,由启动文件 starttup_stm32f103xe.s 决定了

0x00000000 和 0x00000004 地址存储什么内容,链接时,由分散加载文件(sct)决定这些内容的绝 对地址,即分配到内部 FLASH 还是内部 SRAM。

(3)系统存储器启动方式

当芯片上电后采样到 BOOT0 =1,BOOT1=0 的组合时,内核将从系统存储器的 0x1FFFF000

及 0x1FFFF004 获取 MSP 及 PC 值进行自举。系统存储器是一段特殊的空间,用户不能访问,

ST 公司在芯片出厂前就在系统存储器中固化了一段代码。因而使用系统存储器启动方式时,内 核会执行该代码,该代码运行时,会为 ISP(In System Program)提供支持,在 STM32F1 上最常 见的是检测 USART1 传输过来的信息,并根据这些信息更新自己内部 FLASH 的内容,达到升 级产品应用程序的目的,因此这种启动方式也称为 ISP 启动方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基本指令----下

Linux基本指令----下 date指令cal指令find指令which指令whereis指令grep指令du指令zip/unzip指令tar指令bc指令uname -r指令关机指令重要热键结语 date指令 语法: date 指定格式显示时间: date %Y:%m:%d,date 用法:date [OPTION]…

【FPGA零基础学习之旅#5】产生非等占空比信号

🎉欢迎来到FPGA专栏~产生非等占空比信号 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能…

字节跳动 测试开发工程师 面试总结,小伙伴可以参考一下

目录 一面 二面 三面 个人总结: 一面 自我介绍 操作系统 虚拟内存的概念 进程和线程 线程同步 如何实现线程同步 计算机网络 说一下TCP 为什么是四次挥手呢 说一个ip地址,如果第一字节是269行不行 说一下HTTP(自己讲了GET POST&…

[abc复盘] abc301 20230514

[abc复盘] abc301 20230514 总结A - Overall Winner1. 题目描述2. 思路分析3. 代码实现 B - Fill the Gaps1. 题目描述2. 思路分析3. 代码实现 C - AtCoder Cards1. 题目描述2. 思路分析3. 代码实现 D - Bitmask1. 题目描述2. 思路分析3. 代码实现 E - Pac-Takahashi1. 题目描…

Azure描述云服务类型

Azure描述云服务类型 基础结构即服务(IaaS)共担责任模型方案 介绍平台即服务(PaaS)共担责任模型方案 描述软件即服务(SaaS)共担责任模型方案 描述责任共担模型知识检查题目 基础结构即服务(IaaS…

pyqt实现文件批量操作

代码逻辑 https://download.csdn.net/download/Lynqwest/87783077 文件打包 一、安装UPX 在https://github.com/upx/upx/releases/tag/v3.96下载相关版本,该网址无法进入,可参考https://download.csdn.net/download/Lynqwest/87783084 下载后将 upx…

谓词逻辑与推理演算

谓词逻辑 辖域 变元的约束—换自由变元 不容易出错 枚举 前束范式 量词例子 全称量词 ( ∀ x ) 条件前件加入 → (\forall x) 条件前件加入 \to (∀x)条件前件加入→ 存在量词 ( ∃ x ) 和取式 ∧ (\exists x) 和取式 \wedge (∃x)和取式∧ ∀ x P ( x ) ⟺ ∃ x P ( x ) \…

Mac M2芯片免安装版mysql

文章目录 1、下载mysql安装包2、移动解压目录并授权3、初始化mysql4、启动mysql5、启动错误处理6、登录mysql7、重置mysql密码 1、下载mysql安装包 先看一下本机mac信息 左上角,单机苹果的logo,然后单击“关于本机”,可以看到当前mac的信息 …

【JAVA进阶】Set集合、Map集合

📃个人主页:个人主页 🔥系列专栏:JAVASE基础 目录 一、Set系列集合 1.HashSet 2.LinkedHashSet 3.TreeSet 二、补充知识 1.可变参数 2.集合工具类Collections 三、Map集合体系 1.Map集合的概述 2.Map集合体系特点 3.Map…

mybatis plus自动生成代码(代码生成器)

参考 05_尚硅谷_搭建项目环境(代码生成器)_哔哩哔哩_bilibili 调用mp的AutoGenerator可以生成代码,就像java脚本一样,运行即可生成 要求代码生成器脚本不用会写,会修改其中条项生成我们预期的代码即可。 项目整体结构…

前端 之 FormData对象浅谈

一、简介 ​ 通常情况下,前端在使用post请求提交数据的时候,请求都是采用application/json 或 application/x-www-form-urlencoded编码类型,分别是借助JSON字符串来传递参数或者keyvalue格式字符串(多参数通过&进行连接&…

mediasoup Transport端口策略

一. 前言 mediasoup 支持多种类型的 Transport,有 WebRtcTransport,PlainTransport 以及 PipeTransport,对于 WebRtcTransport 目前 mediasoup 最新版本已经支持多个 WebRtcTransport 共用单个端口的模式了,而在此之前每个 WebRtc…

真题详解(补码转换)-软件设计(七十四)

真题详解(索引查询)-软件设计(七十三)https://blog.csdn.net/ke1ying/article/details/130659024 Composite模式: 以树形结构来表示”整体-部分”的关系,使得单个和团体的使用都具有一致性。 对一个基本有序的数组进行排序,适合…

【PCIE体系结构九】物理层的基本逻辑框架

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考书籍:《深入浅出SSD:固态存储核心技术、原理与实战》 物…

可见光遥感图像目标检测(三)文字场景检测之Arbitrary

前言 前面介绍了关于可见光遥感图像目标检测任务主要面临的问题,现在对旋转目标的问题进行优化,为了便于大家理解与之前通用目标检测区别,采用Faster-Rcnn网络模型的架构对旋转目标的检测进行改进。 本教程禁止转载。同时,本教程来…

5G-NR非连续接收DRX参数配置详解

5G-NR系统配置中的非连续接收系统 DRX:Discontinuous Reception 5G终端商用在即,根据前期测试及部分5G友好用户反馈,“5G终端功耗大,待机差”问题特别突出。根据5G技术特性,导致5G终端相比4G功耗大很多的原因有如下4…

干货 | Amos实操教程之中介效应检验

Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 本次推文,我们就来给大家介绍一种处理结构方程模型软件——Amos 。 01 摘要 Amos是什么? Amos由James L. Arbuckle所发展,全名是Analysis of Moment S…

泛化深度学习综述

机器学习系统通常假设训练和测试分布是相同的。为此,一个关键的需求是开发可以推广到unseen分布的模型。领域泛化(DG,Domain generalization),即分布外泛化(out-of-distribution generalization&#xff09…

vim强大的快捷键

文章目录 vim强大的快捷键(必须在可视模式下完成)光标移动(上下左右移动)行选中列选中复制粘贴剪切删除取消后悔取消跳到文件的末尾跳转到我呢见的开头保存并且退出vim编辑器自动补全自动格式化回到行首(这一行的第一个…

ESP32设备驱动-MMA8452加速度计驱动

MMA8452加速度计驱动 文章目录 MMA8452加速度计驱动2、硬件准备3、软件准备4、驱动实现MMA8452Q 是一款智能、低功耗、三轴、电容式微加工加速度计,具有 12 位分辨率。 该加速度计具有嵌入式功能,具有灵活的用户可编程选项,可配置为两个中断引脚。 嵌入式中断功能可实现整体…