BOOT电路

news2024/11/18 17:41:40

本质:BOOT电路本质上是单片机的引脚

作用:BOOT电路的作用是用于确定单片机的启动模式

使用方法:在单片机上电或者复位时给BOOT管脚设置为指定电平即可将单片机设置为指定启动模式。

原理:单片机上电或复位后会先启动内部晶振,第四个SysTick时单片机内部电路会将BOOT引脚的值进行锁存,也就是保存BOOT引脚的值,再根据BOOT引脚的值确定不同的启动模式。

数据手册

数据手册中关于BOOT的相关说明如下图(手册为stm32f4xx系列)

 存储器采用固定的存储器映射,其中代码区域起始地址为 0x0000 0000,通过 ICode/DCode 总线访问,而数据区域起始地址为 0x2000 0000,通过系统总线访问。在这种情况下,Cortex-M4F CPU 通过 ICode 总线获取复位向量,因此只有代码区域(通常为 Flash 存储器)可以提供自举空间。然而,STM32F4xx 微控制器实施了一种特殊机制,允许从其他存储器(如内部 SRAM)进行自举。这意味着即使复位向量存储在 Flash 存储器中,STM32F4xx 微控制器也可以通过特殊机制从内部 SRAM 或其他存储器启动和执行程序。这种特殊机制为STM32F4xx微控制器提供了更大的灵活性,使其能够从多种存储器区域进行自举,而不仅局限于代码区域(Flash)中。这样的设计可以为开发人员提供更多选择,以满足不同应用场景的需求。

STM32F4xx 微控制器中可以通过 BOOT[1:0] 引脚选择三种不同的自举模式。这些引脚提供了控制启动模式的能力,允许开发人员在启动时选择不同的启动选项。表 3中列出了这些不同的自举模式,包括从不同存储器区域启动或采用不同的引导配置。在不同的自举模式下,微控制器会执行不同的启动流程,以满足需求。通过适当选择 BOOT[1:0] 引脚的状态组合,可以配置 STM32F4xx 微控制器以启动到特定的模式,这种灵活性有助于应对不同的应用需求和场景。

在 STM32F4xx 微控制器中,复位后,在 SYSCLK 的第四个上升沿会锁存 BOOT 引脚的值。这意味着在复位后的一段时间内(通常是 SYSCLK 的第四个上升沿),系统会稳定 BOOT 引脚的状态,并使用这个状态来确定启动的方式。用户可以通过设置 BOOT1 和 BOOT0 引脚的状态来选择所需的自举模式。通过控制这两个引脚的组合状态,用户可以指定微控制器在启动时应该从哪个存储器区域(如 Flash、SRAM等)启动,或者采用不同的启动配置选项。因此,通过设定 BOOT1 和 BOOT0 引脚,用户可以灵活地选择适合其应用需求的启动模式,从而实现对 STM32F4xx 微控制器启动行为的控制。

在 STM32F4xx 微控制器中,BOOT0 是一个专用引脚,而 BOOT1 则是一个与 GPIO 引脚共享的引脚。一旦完成对 BOOT1 的采样并确定了启动模式,相应的 GPIO 引脚即可进入空闲状态,变为可用于其他用途。这种设计使得在确定启动模式后,原本用于选择启动模式的 GPIO 引脚可以释放出来,供开发人员用于连接其他外设或执行其他功能。这种灵活性允许用户在启动完成后重用这些引脚,以满足不同的应用需求。因此,一旦对 BOOT1 引脚进行采样并完成启动模式的选择,相应的 GPIO 引脚可以自由地被重新配置和使用,而不再限定于启动模式选择用途。这样的设计有助于优化引脚资源的利用,并允许开发人员充分发挥 STM32F4xx 微控制器的功能。

在 STM32F4xx 微控制器中,当设备退出待机模式时,会对 BOOT 引脚进行重新采样。因此,在设备处于待机模式期间,这些引脚必须保持所需的自举模式配置,以确保在退出待机模式后系统能够按照预期的方式启动。一旦启动延迟结束,CPU 将会从地址 0x0000 0000 获取栈顶值,然后从地址 0x0000 0004(自举存储器的起始地址)开始执行代码。这意味着在设备重新启动时,系统会先获取栈顶值,然后从自举存储器的地址处开始执行代码,这样确保了系统正确地启动并恢复到正常工作状态。因此,在 STM32F4xx 微控制器中,对 BOOT 引脚的正确配置和保持与所需的自举模式相关的状态非常重要,以确保设备能够顺利退出待机模式并正确启动。系统会按照设定的自举模式配置来执行启动流程,从而保证设备在重新启动后能够正常运行。

当STM32F4xx微控制器以SRAM自举方式启动时,需要在应用程序初始化代码中重新分配向量表以确保中断服务程序能够正确执行。在这种情况下,需要使用NVIC异常及中断向量表和偏移寄存器进行重新分配。

具体做法包括以下步骤:
1. 将中断向量表地址设置为SRAM中的新地址。
2. 更新NVIC偏移寄存器的值,以确保向量表中的中断向量正确映射到相应的中断服务程序。

通过重新分配向量表,可以确保系统能够正确处理中断,使应用程序在SRAM自举模式下能够正常运行。这一步是必要的,因为在SRAM自举模式下,系统不再从Flash等其他存储器中读取中断向量表,而是从SRAM中读取,所以需要重新分配以确保正确的中断处理流程。

三种启动模式

1)主FLASH = 芯片内置的Flash。
2)SRAM = 芯片内置的RAM区,就是内存。
3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。这个系统存储器只是帮你通过ISP程序下载hex进去的

从主FLASH启动
其中用于FLASH的地址范围为0x0800 0000~0x080F FFFF ,大小为1MB

将主Flash地址0x08000000映射到0x00000000,这样代码启动之后就相当于从0x08000000开始。主闪存存储器是STM32内置的Flash,作为芯片内置的Flash,是正常的工作模式。一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。

从系统存储区启动
系统存储区地址范围为0x1FFF 0000~0x1FFF 7A0F,大小为30KB

系统存储区实际上存放了一段ST事先写好的BootLoader程序,且不可以被修改,用于ISP下载,也就是串口方式下载,当我们将BOOT0拉高,BOOT1拉低时,也就是系统存储器模式启动,单片机会将0x1FFF 0000~0x1FFF 7A0F这段空间映射到0x0000 0000处,运行系统内置的BootLoader程序,也就是串口下载的程序,使用串口将程序下载到FLASH中,下载完成之后就将BOOT0拉低,重启,使用主FLASH的方式运行使用串口下载的程序了。

从SRAM启动
SRAM位于block2 地址范围从0x2000 0000开始,不同型号大小不同

将SRAM地址0x20000000映射到0x00000000,这样代码启动之后就相当于从0x20000000开始。内置SRAM,也就是STM32的内存,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码,用于快速的程序调试,等程序调试完成后,在将程序下载到SRAM中。

BOOT电路

Boot0和Boot1引脚被用来设定单片机的启动模式,它们通常需要单独的电源和电源地是为了避免不同引脚之间的干扰和影响,确保引脚功能的准确性和可靠性。具体原因包括以下几点:

1. **电源隔离**:Boot0和Boot1引脚需要连接到不同的电源线路上,因为在某些情况下,这两个引脚可能会需要不同的电源供应条件。通过单独的电源连接,可以避免由于电源干扰而导致引脚功能异常或误操作。

2. **地线隔离**:同样,Boot0和Boot1引脚通常需要连接到不同的地线上,即电源地。分开地线连接有助于减少地线回路干扰和使得引脚的接地更为稳定,确保系统的可靠性和稳定性。

3. **信号隔离**:Boot0和Boot1引脚在电路设计中可能受到其他信号线的影响,为了避免不同信号线之间的干扰,单独的电源和地线也能帮助减少信号干扰,确保引脚操作的准确性。

总的来说,单独的电源和电源地连接有助于确保Boot0和Boot1引脚在工作时具有良好的电气特性,减少外部干扰和影响,保证单片机启动模式设置的准确性和可靠性。

在Boot0和Boot1电路上引脚上加电阻通常有以下几个作用:

1. **限流作用**:添加电阻可以限制引脚上的电流,避免在异常情况下(比如短路)产生过大的电流,保护单片机不受损害。

2. **消除漂移**:在复杂电路环境中,引脚可能会受到外部信号的影响而产生漂移,通过给引脚加上电阻可以帮助减小这种影响,保持引脚信号的稳定性。

3. **防抖作用**:引脚上的电阻可以帮助减少引脚信号的抖动或干扰,确保信号传输的稳定性和可靠性。

4. **调节电平**:通过选择合适大小的电阻,可以调节引脚上的电平,确保单片机在正确的电平下正常工作。

总的来说,给Boot0和Boot1电路上的引脚添加电阻有助于保护单片机、稳定信号、减小影响,并确保正常的工作状态。在设计电路时,需要根据具体情况选择合适的电阻数值和类型,以满足系统要求并提高系统性能和稳定性。

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

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

相关文章

13.题目:编号511 灌溉

题目&#xff1a; ###本题主要考察枚举、模拟 #include<bits/stdc.h> using namespace std; const int N105; bool a[N][N],b[N][N]; int main(){int n,m;cin>>n>>m;int t;cin>>t;while(t--){int c,r;cin>>c>>r;a[c][r]1;}int k;cin>…

线性表——单链表的增删查改

本节复习链表的增删查改 首先&#xff0c; 链表不是连续的&#xff0c; 而是通过指针联系起来的。 如图&#xff1a; 这四个节点不是连续的内存空间&#xff0c; 但是彼此之间使用了一个指针来连接。 这就是链表。 现在我们来实现链表的增删查改。 目录 单链表的全部接口…

vue项目导出excel ,文件过大导致请求超时的处理方法

一、因为文件过大&#xff0c;请求时间较长&#xff0c;就会产生请求超时的情况&#xff0c;处理方式是可以分为三个接口&#xff0c;接口1用来获取id值&#xff0c;接口2利用id值发起请求&#xff0c;询问是否准备好下载&#xff0c;如果没准备好&#xff0c;则没隔一秒再次发…

搜维尔科技:OptiTrack 提供了性能最佳的动作捕捉平台

OptiTrack 动画 我们的 Prime 系列相机和 Motive 软件相结合&#xff0c;产生了世界上最大的捕获量、最精确的 3D 数据和有史以来最高的相机数量。OptiTrack 提供了性能最佳的动作捕捉平台&#xff0c;具有易于使用的制作工作流程以及运行世界上最大舞台所需的深度。 无与伦比…

Linux Centos7配置SSH免密登录

Linux Centos7配置SSH免密登录 配置SSH免密登录说明&#xff1a; 分两步 第一步、给Server A生成密钥对 第二步、给Server B授权 生成密钥对之后&#xff0c;我们可以看看它保存的目录下的文件。 接下来我们就要把Server A&#xff08;10.1.1.74&#xff09;的公钥拷贝到Se…

【踩坑】修复xrdp无法关闭Authentication Required验证窗口

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 问题如下&#xff0c;时不时出现&#xff0c;有时还怎么都关不掉&#xff0c;很烦&#xff1a; 解决方法一&#xff1a;命令行输入 dbus-send --typemethod_call --destorg.gnome.Shell /org/gnome/Shell org.gn…

ElasticSearch之找到乔丹的空中大灌篮电影

写在前面 本文看一个搜索的实际例子&#xff0c;找到篮球之神乔丹的电影Space Jam&#xff0c;即空中大灌篮。 正式开始之前先来看下要查询的目标文档&#xff0c;以及查询的text&#xff1a; 要查询的目标文档 {..."title": "Space Jam",..."ove…

加密与安全_深入了解哈希算法

文章目录 Pre概述哈希碰撞常用的哈希算法Codejava.security.MessageDigestMD5SHA-1SHA-256MessageDigest支持算法 哈希算法的用途彩虹表攻击基本原理攻击过程 防御彩虹表攻击基本原理用途 小结 Pre PKI - 01 散列(Hash)函数 概述 哈希算法&#xff08;Hash&#xff09;又称摘…

TikTok云手机可以运营多少个账号

在社交媒体平台上&#xff0c;尤其是像TikTok这样的热门应用中&#xff0c;账号运营已经成为了许多人的日常工作。而利用云手机技术&#xff0c;一台手机能够同时运营多个TikTok账号&#xff0c;为用户带来了更大的便利和灵活性。本文将探讨 TikTok云手机能够运营多少个账号&am…

【生成式AI】ChatGPT原理解析(1/3)- 对ChatGPT的常见误解

Hung-yi Lee 课件整理 文章目录 误解1误解2ChatGPT真正在做的事情-文字接龙 ChatGPT是在2022年12月7日上线的。 当时试用的感觉十分震撼。 误解1 我们想让chatGPT讲个笑话&#xff0c;可能会以为它是在一个笑话的集合里面随机地找一个笑话出来。 我们做一个测试就知道不是这样…

Linux课程四课---Linux开发环境的使用(vim编辑器的相关)

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

【Linux】协程简介

【Linux】协程简介 一、什么是协程&#xff1f;简介优点 二、为什么使用协程&#xff1f;三、协程的种类1、对称协程2、非对称协程 四、协程栈1、静态栈2、分段栈3、共享栈4、虚拟内存栈 五、协程调度1、栈式调度2、星切调度3、环切调度 六、常见协程库参考文献 一、什么是协程…

Spring Task的应用

介绍 Spring Task是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a; 定时任务框架 作用&#xff1a; 定时自动执行某段Java代码 应用场景&#xff1a; 引用卡每月还款提醒、银行贷款每月还款提醒、火车票售票系统处理未支…

SpringCloud(17)之SpringCloud Stream

一、Spring Cloud Stream介绍 Spring Cloud Stream是一个框架&#xff0c;用于构建与共享消息系统连接的高度可扩展的事件驱动微服务。该框架提供了一个灵活的编程模型&#xff0c;该模型建立在已经建立和熟悉的Spring习惯用法和最佳实践之上&#xff0c;包括对持久发布/子语义…

软件性能测试工具RunnerGo安装步骤

现在安装RunnerGo仅需要一条命令&#xff01;目前支持系统&#xff1a;Centos、Debian、Ubuntu三种。下面给大家介绍一下RunnerGo安装使用流程&#xff1a; Step1&#xff1a;复制以下命令 wget https://img.cdn.apipost.cn/running_go/img/wiki/runnergo.tar && ta…

探索 SPA 与 MPA:前端架构的选择与权衡

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…

论文阅读-CheckFreq:频繁、精细的DNN检查点操作。

论文名称&#xff1a;CheckFreq: Frequent, Fine-Grained DNN Checkpointing. 摘要 训练深度神经网络(DNNs)是一项资源密集且耗时的任务。在训练过程中&#xff0c;模型在GPU上进行计算&#xff0c;重复地学习权重&#xff0c;持续多个epoch。学习到的权重存在GPU内存中&…

机器遗忘同等重要,AI如何忘记不良数据,保护用户隐私?

引言&#xff1a;大语言模型中的机器遗忘问题 在人工智能领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;因其在文本生成、摘要、问答等任务中展现出的卓越能力而备受关注。然而&#xff0c;这些模型在训练过程中可能会记住大量数据&#xff0c;包括敏感或不当的信息…

【MySQL】学习和总结标量子查询

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-kLo6jykc7AcEVEQk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…