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

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

相应的中文翻译例如以下:

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

  • Main Flash memory

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

  • System memory

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

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

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

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

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

Step3:程序下载完毕后,又有须要将BOOT0设置为GND,手动复位,这样,STM32才干够从Flash中启动

能够看到,利用串口下载程序还是比較的麻烦,须要跳帽跳来跳去的,很的不注重用户体验。

  • Embedded Memory

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

假如我仅仅改动了代码中一个小小的地方,然后就须要又一次擦除整个Flash,比較的费时,能够考虑从这个模式启动代码(也就是STM32的内存中),用于高速的程序调试,等程序调试完毕后,在将程序下载到SRAM中。

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

Duanxx的STM32学习: 启动模式,BOOT0和BOOT1具体解释的更多相关文章

  1. STM32三种启动模式 boot0 boot1

    STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存=芯片内置的Flash.2)SRAM=芯片内置的RAM区,就是内存啦.3)系统存储器=芯片内部一块特定的区域,芯片出厂时在这个 ...

  2. Duanxx的STM32学习:STM32下载方式选择

    前几天熟悉了STM32的启动方式.主要由Boot0和Boot1设置 如今须要解决的就是STM32的下载的问题. 一開始的时候,我选择的是SWD下载.这样的下载方式须要Boot0=0.Boot1=0.占 ...

  3. Duanxx的STM32学习:STM32命名规则

  4. Duanxx的STM32学习: STM32的存储映射

  5. Duanxx 的 STM32 学习: 中断向量表操作

  6. Duanxx的STM32学习:STM32F103中等容量的功能和外设

    版权声明:本文博客原创文章,博客,未经同意,不得转载.

  7. Duanxx的STM32学习:NVIC操作

    版权声明:本文博客原创文章,博客,未经同意,不得转载.

  8. 关于stm32的启动模式

    1)用户闪存 = 芯片内置的Flash,这个应该就是在Keil中选择那个,每个芯片的flash不一样,具体可以在建立工程时查看内置flash的大小. 2)SRAM = 芯片内置的RAM区,就是内存啦. ...

  9. STM32启动模式

    STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash.2)SRAM = 芯片内置的RAM区,就是内存啦.3)系统存储器 = 芯片内部一块特定的区域,芯片 ...

随机推荐

  1. 【机器学习】SVM核函数

    知识预备 1. 回顾:logistic回归出发,引出了SVM,即支持向量机[续]. 2.  Mercer定理:如果函数K是上的映射(也就是从两个n维向量映射到实数域).那么如果K是一个有效核函数(也称 ...

  2. OCP读书笔记(16) - 管理资源

    使用者组 创建资源用户组OLTP_GRP,将用户HR,OE加入此组: BEGIN dbms_resource_manager.clear_pending_area(); dbms_resource_m ...

  3. vc 基于对话框多线程编程实例——线程之间的通信

     vc基于对话框多线程编程实例——线程之间的通信 实例:

  4. POJ1611 The Suspects (并查集)

    本文出自:http://blog.csdn.net/svitter 题意:0号学生染病,有n个学生,m个小组.和0号学生同组的学生染病,病能够传染. 输入格式:n,m 数量  学生编号1,2,3,4 ...

  5. 用 C++ 标准模板库(STL)的 vector 实现二叉搜索树(BST)

    本文由 Justme0翻译自 Code Project 转载请参见文章末尾处的要求. 介绍 众所周知,要建一棵树,我们需要关注它的内存分配与释放.为了避开这个问题,我打算用C++ STL(vector ...

  6. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  7. python语言学习1——初识python

    Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 龟叔给Python的定位是“优雅”.“明确”.“简单”,所以Python ...

  8. Wix打包系列(二)用户界面和本地化操作

    原文:Wix打包系列(二)用户界面和本地化操作 上一章节,我们已经大概知道如何对文件进行打包安装,不过我们也注意到,通过对Sample.wxs的编译链接,生成的msi安装包没有任何用户界面,只有一个安 ...

  9. I2C分析三

    1 引言 IIC (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备.它是同步通信的一种特殊形式,具有接口线少.控制方 ...

  10. IntelliJ IDEA 14 注册码生成java代码(转)

    https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases 分享几个license: ( ...