STM32三种启动模式 boot0 boot1

STM32三种启动模式对应的存储介质均是芯片内置的,它们是:

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

在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:

BOOT1=xBOOT0=0从用户闪存启动,这是正常的工作模式。
BOOT1=0BOOT0=1从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1BOOT0=1从内置SRAM启动,这种模式可以用于调试。
-----------------------------------------------------------------------------------------------------------------------------
原文链接:http://blog.csdn.net/daunxx/article/details/40148945

在画STM32的电路图的时候,关于STM32的启动方式纠结了一下,现有的参考设计都是在STM32的启动选择引脚BOOT0和BOOT1上使用了跳帽,用以人工选择STM32的启动方式,但是在实际应用中这种设计就显得冗余,所以这里顺带研究了一下STM32的启动方式。

STM32一共有三种启动模式,在ST官网上下载的RM0008中,我找到了启动相关的配置说明:

所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

•MainFlashmemory

是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。

•Systemmemory

从系统存储器启动,这种模式启动的程序功能是由厂家设置的。一般来说,这种启动方式用的比较少。

系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。

一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:

Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader

Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中

Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动

可以看到,利用串口下载程序还是比较的麻烦,需要跳帽跳来跳去的,非常的不注重用户体验。

•EmbeddedMemory

内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。

假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,在将程序下载到SRAM中。

综上所述,在我的设计中,我将BOOT0和BOOT1通过一个100k的下拉电阻,直接接地。

转载于:https://www.cnblogs.com/CodeWorkerLiMing/p/9645096.html

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

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

相关文章

实例37:python

#对10个数进行排序。 #!/usr/bin/python -- coding: UTF-8 -- print (‘请输入10个数字:\n’) a[] for n in range(10): a.append(int(input(‘输入一个数字:\n’))) for i in range(0,9): mini for j in range(i1,10): if a[min]>a[j]: minj if min!i: ta[min] a[min]a[i…

南京二本有什么计算机学校,南京有什么好的二本学校?

南京是六朝古都,历史底蕴深厚。南京市高等教育资源丰富。南京市有高校53所,其中本科院校35所,35所,本科院校中,民办本科院校10所,公办本科院校25所。25所公办本科院校中,一本院校占多数&#xf…

阿联酋esma认证怎么做_行业视野 | 关于阿联酋eCall 的要求更新

行业视野 | 关于阿联酋eCall 的要求更新背景:根据2018年底阿联酋标准与计量局ESMA发布的通知,自2020年起所有出口到阿联酋的2021MY轻型车辆需安装eCall系统,并满足阿联酋相关法规要求。必维集团汽车服务部致力于为国内企业消除认证壁垒&#…

实例38:python

#题目:求一个3*3矩阵主对角线元素之和。 #程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 #!/usr/bin/python -- coding: UTF-8 -- if name ‘main’: a [] sum 0.0 for i in range(3): a.append([]) for j in ran…

Bootstrap table后端分页(ssm版)

说明bootstrap table可以前端分页,也可以后端sql用limit分页。这里讲的是后端分页,即实用limit。性能较好,一般均用这种源码下载地址:https://git.oschina.net/dshvv/pagination_byjava.git该文主要讲后端分页:1、前端…

初中计算机课程计划,最新2020年度初中信息技术教学计划(精选3篇).doc

初中信息技术教学计划(精选3篇)初中信息技术教学计划1一、学生基本情况本计划针对七年级全体学生,通过上年的学习,学生对办公软件例如word、excel有一定了解,但是由于每一学期信息技术课时比较少,每周只有一节课,学生的…

dart 乘方运算符_Dart系列-运算符

周末学习了一下Dart语言,按照慕课网Flutter开发第一步-Dart编程语言入门教程进行学习,所以记录一下,感觉慕课网的老师辛苦做的视频教程,说得很清楚,有基础学起来很轻松也很快,本篇来学习dart的运算符。算术…

实例39:python

#题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 #程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 #程…

6.0动态加载权限用PermissionGen

ndroid 6.0 新增加了运行时的动态添加权限,在此介绍一个第三方库,PermissionGen,可以很方便简洁的增加 6.0权限 首先给大家上 PermissionGen 库地址:https://github.com/lovedise/PermissionGen 下面给大家详细介绍它的使用&…

量子计算机具有天热的,量子绝热计算

摘要:本文在GNU/Linux 平台上基于Libquantum C 编译的环境实现了比QSS(Quantum System Simulator)精度高的量子绝热SAT(satisfiability problem)算法。通过选择Ising 模型的一个简化的Hamiltonian 量,在量子绝热SAT 算法中的精度得到进一步的加强。 第二章,介绍了量…

实例40:python

#将一个数组逆序输出 #!/usr/bin/python -- coding: UTF-8 -- a[0,1,2,3,4,5,6,7,8,9] for i in range(0,10): print(a.pop(),end’’)

python第三方库全部_自动更新Python所有第三方库

一般python用得比较久以后,就会安装很多第三方的库。比如这是我的pip list情况:pip list而且一屏还显示不完。通过如下命令可以看到需要更新的第三方库:pip list -o需要更新的库而pip提供的更新命令只能一个个的更新...pip install -U 库名 #…

2018.09.15 vijos1053Easy sssp(最短路)

传送门 貌似可以最短路时同时判定负环啊。 但我不想这样做。 于是写了一个dfs版的判环&#xff0c;bfs版的求最短路。 代码&#xff1a; #include<iostream> #include<cctype> #include<cstdio> #include<cstring> #include<queue> #define …

计算机学院创新实验室,ACM创新实验室概况

计算机与信息技术学院ACM创新实验室创建于2013年经9月&#xff0c;在学院领导的大力支持下&#xff0c;由兰义华、马晓普两位博士发起组建&#xff0c;经过近年来的发展&#xff0c;在全体队员和教练的共同努力下&#xff0c;实验室形成了较完善的管理制度和较成熟的运行模式&a…

python之pop

python中pop()函数的用法 pop() 函数用于移除列表中的一个元素&#xff08;默认最后一个元素&#xff09;&#xff0c;并且返回该元素的值。 语法&#xff1a;list.pop(objlist[-1]) //默认为 index-1&#xff0c;删除最后一个列表值。 obj – 可选参数&#xff0c;要移除列表元…

函数的有界性

要证明f(x)在X上有界&#xff0c;必须找到一个M>0&#xff0c;使任意x属于X都有 |f(x)|<M&#xff1b;要证明f(x)在X上无界&#xff0c;只需要找到一个数列{xn}存在于X,使f(xn) n趋于∞&#xff0c;f(xn)趋于∞ 外界函数有界&#xff0c;复合函数必有界转载于:https://ww…

康宁玻璃ct值计算公式_【钦州】CT室铅板生产厂家

【钦州】CT室铅板生产厂家石膏板等做复合层&#xff0c;整个工程下来人工费&#xff0c;造价费贵多了。而硫酸钡粉工艺造价费也走高&#xff1f;原因在于&#xff0c;它工艺本身就要考虑墙壁表面平整与否&#xff0c;干燥速度&#xff0c;气候&#xff0c;温度等诸多因素&#…

职业中专计算机基础试讲课,职业中专计算机基础教育分析

职业中专计算机基础教育分析摘要&#xff1a;职业教育是指培养面向具体的职业岗位(岗位群)所需职业能力人才的专业基础教育。而在职业教育中除了开设各专业所需的专业课程外&#xff0c;还要开设一些基础教育来充实学生的能力&#xff0c;为其就业打下坚实的基础。计算机基础教…

实例41:python

#模仿静态变量的用法。 #!/usr/bin/python -- coding: UTF-8 -- def varfunc(): var 0 print (‘var %d’ % var) var 1 if name ‘main’: for i in range(3): varfunc() 类的属性 作为类的一个属性吧 class Static: StaticVar 5 def varfunc(self): self.StaticVar…

mysqlnavicat数据库备份与恢复_Navicat如何还原MySQL数据库

Navicat作为高级数据库管理工具&#xff0c;它有着备份和还原的功能&#xff0c;可以用来备份导入的数据库或者是还原备份的数据库。前面教程给大家介绍了Navicat备份数据库的方法&#xff0c;那么如果要还原数据库&#xff0c;该如何操作呢&#xff1f;下面就一起来学习Navica…