STM32三种启动模式:【详细讲解】

STM32在上电后,从那里启动是由BOOT0和BOOT1引脚的电平决定的,如下表:

BOOT模式选引脚启动模式
BOOT0BOOT1
X0主Flash启动
01系统存储器启动
11内置SRAM启动

BOOT 引脚的值在重置后 SYSCLK 的第四个上升沿时被锁定。在重置后,由用户决定是如何设置 BOOT1 和 BOOT0 引脚,来选择需要的启动模式。

1. 启动代码的位置

启动延迟过后,CPU 从引导存储器中启动代码执行.启动代码位于存储器地址最底部的地址,起始
地址是 0x0000_0000

2. STM32的启动模式

STM32支持多种启动模式,主要由BOOT0和BOOT1这两个引脚的状态决定。常见的启动模式包括:

  1. 主Flash启动:这是最常用的启动模式。在此模式下,STM32的主闪存存储器(Flash Memory)被映射到启动空间(0x0000_0000),但实际上Flash Memory的内容仍然可以在其原有的地址(如0x0800_0000)访问。这样,当CPU从0x0000_0000开始执行时,它实际上是在执行Flash Memory中的程序。
  2. 系统存储器启动:在这种模式下,系统存储器(System Memory)被映射到启动空间(0x0000_0000)。系统存储器中通常存储了STM32自带的Bootloader程序,该程序允许用户通过串行接口(如UART)将新的程序代码下载到Flash Memory中。值得注意的是,系统存储器的物理地址(如0x1FFF_F000)在此时也被映射到了0x0000_0000。
  3. 内置SRAM启动:在这种模式下,STM32的内部静态随机存取存储器(SRAM)被用作启动空间。然而,SRAM的访问仅限于其原始地址(如0x2000_0000开始),并不会被映射到0x0000_0000。因此,在SRAM启动模式下,需要通过特殊的方式(如修改中断向量表)来确保CPU能够正确地找到并执行启动代码。

主Flash启动:(正常情况下使用

一般使用 JTAG或者 SWD接口下载程序固件时,程序将被下载到这里,芯片重启后也将直接从这里读取并启动程序

系统存储器启动:(非正常情况使用,用来实现ISP下载

这种模式启动的程序功能是由芯片厂家设置的。这种启动方式一般情况不使用。系统存储器是芯片内部一块特定的区域,STM32 出厂时由ST公司在这个区域内部预置了一段BootLoader, 即我们常说的 ISP程序, 这是一块ROM, 出厂后无法修改
我们选用这种启动模式时,大多是为了使用 串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的 Flash 中。但是这个下载方式需要以下步骤:
Step1:将 BOOT0 设置为 1,BOOT1 设置为 0,然后按下复位键,这样才能从系统存储器启动 BootLoader
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中
Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从 Flash 中启动。所以使用串口下载程序较为 麻烦, 需要频繁切换BOOT0与BOOT1。

内置 SRAM:

内置SRAM,SRAM没有程序存储的能力,这个模式一般用于频繁的程序调试,这样可以减少flash的擦写次数,保护flash。
这种模式可以用于 程序调试。 假如只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到SRAM中

主流用法:

一般比较主流boot模式是主Flash启动,使用ST-LINK+keil5 debug起来比较方便,速度也比较快

3:引脚配置

4:ISP和IAP

ISP就是in-system programming(在系统烧录,在系统编程)。

以前烧录bin/hex文件到单片机内部flash中是需要借助专用的烧录器的,比较麻烦。随着时间推移衍生出来了一种不需要借助烧录器也不需要将单片机从板子上拆卸下来的烧录方法,这种方法就是ISP。一般ISP都是PC通过串口把bin/hex文件ISP到单片机内部的flash。例如STM32从系统存储器启动模式,就是在系统存储器中存储了一段可以接收串口数据的代码来实现将bin/hex文件烧录到主闪存存储器,烧录完成后再将启动模式手动切换成主闪存存储器执行刚刚烧录的程序。

IAP就是in-application programming(在应用编程,在应用烧录,在线升级)。

IAP的核心是用户需要在自己的应用程序中去操作单片机内部flash的控制器的寄存器,实现对内部flash的烧录功能。IAP的时候用户程序通过串口、usb、ethernet等,来实现接收PC发送过来的bin/hex文件,然后将之烧录到内部flash中去完成IAP,完成后再次启动后就会从用户存储器区执行,更新就会起效果。一般实现iAP需要人为的将用户存储器区分为2部分:bootloader+app

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot vue3 在线考试系统设计与实现 源码数据库 文档

博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆…

基于元神操作系统实现NTFS文件操作(六)

1. 背景 本文主要介绍$Root元文件属性的解析。先介绍元文件各属性的属性体构成,然后结合读取到的元文件内容,对测试磁盘中目标分区的根目录进行展示。 2. $Root元文件属性的解析 使用每个属性头偏移0x04-0x07处的值可以从第一个属性开始依次定位下一个…

一款基于 Java 的可视化 HTTP API 接口快速开发框架,干掉 CRUD,效率爆炸(带私活源码)

平常我们经常需要编写 API,但其实常常只是一些简单的增删改查,写这些代码非常枯燥无趣。 今天给大家带来的是一款基于 Java 的可视化 HTTP API 接口快速开发框架,通过 UI 界面编写接口,无需定义 Controller、Service、Dao 等 Jav…

在线教育的未来:SpringBoot技术实现

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理微服务在线教育系统的相关信息成为必然。开…

【可答疑】基于51单片机的PWM控制智能台灯设计(含仿真、代码、报告、演示视频等)

✨哈喽大家好,这里是每天一杯冰美式oh,985电子本硕,大厂嵌入式在职0.3年,业余时间做做单片机小项目,有需要也可以提供就业指导(免费)~ 🐱‍🐉这是51单片机毕业设计100篇…

什么软件能指定usb端口禁用?五款电脑USB端口禁用软件!(热门分享)

什么软件能指定usb端口禁用? USB端口,作为电脑与外部设备连接的重要接口,其安全性日益受到企业的重视。 为了有效防止数据泄露和未经授权的设备接入,指定USB端口禁用成为了许多企业的迫切需求。 本文,将介绍五款热门…

MySQL 用户管理

一.用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中。 host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆user: 用户名authentication_string: 用户密码通过password函…

Python | Leetcode Python题解之第457题环形数组是否存在循环

题目: 题解: class Solution:def circularArrayLoop(self, nums: List[int]) -> bool:n len(nums)def next(cur: int) -> int:return (cur nums[cur]) % n # 保证返回值在 [0,n) 中for i, num in enumerate(nums):if num 0:continueslow, fas…

中小企业做网站需要考虑哪些因素?

中小企业在建设网站时,需要考虑的因素有很多。以下是一些主要考虑因素的介绍: 明确建站目的:中小企业需要明确自己建立网站的目的。是为了展示企业形象、推广产品,还是提供客户服务?不同的目的将决定网站的设计和功能…

MOELoRA —— 多任务医学应用中的参数高效微调方法

人工智能咨询培训老师叶梓 转载标明出处 在医疗场景中,LLMs可以应用于多种不同的任务,如医生推荐、诊断预测、药物推荐、医学实体识别、临床报告生成等。这些任务的输入和输出差异很大,给统一模型的微调带来了挑战。而且LLMs的参数众多&…

微信朋友圈实况照片需要注意隐私

微信朋友圈现在可以发实况了。 一直不怎么发朋友圈,就这几天发现朋友圈可以发实况照片了。 实况照片可让用户在声音和动作丰富的互动体验中捕捉美好瞬间,为传统的静态照片增添活力感。 当实况照片可用时,“相机” App 可在用户拍照之前和之…

服务器数据恢复—raid磁盘故障导致数据库文件损坏的数据恢复案例

服务器存储数据恢复环境&故障: 存储中有一组由3块SAS硬盘组建的raid。上层win server操作系统层面划分了3个分区,数据库存放在D分区,备份存放在E分区。 RAID中一块硬盘的指示灯亮红色,D分区无法识别;E分区可识别&a…

Pytorch基础:网络层

文章目录 1.卷积层-Convolution Layers1.1 1d/2d/3d卷积1.2卷积--nn.Conv2d1.3转置卷积(实现上采样) 2.池化层3.线性层—Linear Layer4.激活函数层—Activate Layer 1.卷积层-Convolution Layers 卷积运算:卷积运算在输入信号(图像)上滑动,相应位置上进行乘加. 卷积核:又称过滤…

开源AI智能名片链动2+1模式S2B2C商城小程序的内容营销易读性策略

摘要:在数字化时代,内容营销已成为企业吸引用户、促进转化的关键手段。然而,面对“懒”这一普遍的人性弱点,如何使内容更加易读、减少用户思考负担,成为提升营销效果的重要议题。本文基于“别让我思考”的可用性设计原…

Jupyter Notebook 更换主题

1、安装 Jupyter 主题 pip install jupyterthemes 2、更新 Jupyter 主题 (可选) pip install --upgrade jupyterthemes 3、查看可用的 Jupyter 主题 jt -l 4、更换 Jupyter 主题 选择你喜欢的主题后,可以使用以下命令来应用它。更换主题后…

html+css+js实现step进度条效果

实现效果 代码实现 HTML部分 <div class"box"><ul class"step"><li class"circle actives ">1</li><li class"circle">2</li><li class"circle">3</li><li class&quo…

MySQL 表的操作

温馨提示&#xff1a;非特殊情况不要修改和删除表 创建表 第一种方式 第二种方式 第三种方式 简单查看 查看表 查询当前数据库&#xff1a;select database(); 查询当前数据库中具有的表&#xff1a;show tables; 查看表的简略信息&#xff1a;desc 表名1&#xff1b; 查看表的…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-05

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-04 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-04目录1. LLM-Augmented Symbolic Reinforcement Learning with Landmark-Based Task Decomposition摘要研究背景问题与挑战如何…

Junit和枚举ENUM

断言机制&#xff0c;JAVA中的断言机制是一种用于检查程序中某个条件是否为真的机制。它可以在程序运行时检查某个条件是否满足&#xff0c;如果不满足则会抛出AssertionError异常。 在java中,断言机制默认是关闭的。所以会输出u。 断言机制只是为了用来吃调试程序的&#xff0…

Windows 11将新增基于AI的搜索、生成式填充和其它AI功能

微软正在扩展 Windows 11 的内置 AI 功能列表&#xff0c;增加了几项新功能&#xff0c;例如由 AI 支持的 Windows 搜索、“Click to Do”、生成填充和擦除以及照片中的超级分辨率等功能。 Click to Do 在您按下 Windows 键并单击鼠标时触发。 它可以扫描屏幕上显示的内容&…