前言
本博文基于STM32F103ZET6和MDK5以及库V3.5.0编写;
本博文以原子开发板为例;
如有不足之处,还请多多指教;
其实本没有必要写这篇文章,因为只要按照开发板配套的教程去做就可以对芯片写入程序即可,而且开发板上往往设计的都有一键下载的相关电路,能够产生DTR和RTS信号,从而将程序直接下载到芯片,对于用户来说,大大多短了下载程序的时间,提高了效率;但是毕竟以后如果要做开发这块的,总不能碰见一个项目就买一个买开发板,然后才能下载程序,这简直有点不可思议,还是要懂得脱离开发板,对一个芯片进行下载程序,从而形成一个完整的系统,这算得上是一个稍微成熟的开发;

STM32开发板下载程序的两种方式
一: 仿真器下载(J-Link,ULink等等)
步骤:
① 给开发版供电(DC5V),插上J-Link;
② 点击MDK工具栏中的Load按键就可将编译好的程序下载到开发板的Flash;
③ 下载好后根据配置可自动运行,也可以不自动运行(通过对下图中的操作控制);

** 二:** 串口USART1下载(注意,只能是USART1)
步骤:
① 给开发板供电(DC5V),拔掉J-Link,插上串口线;
② 使用FlyMcu软件下载编译好的.Hex文件,搜索串口为开发板硬件串口,一般为COMx,波特率选为115200,其配置如图;(红色箭头处要注意:因为今天我们想通过单纯的串口去下载程序,所以此选项处选择“不使用RTS和DTR”)

STM32F10x.h的存储器以及启动配置(这个知识作为对今天研究概念的补充)
STM32F10x.h的存储结构看下面这位前辈总结的:
https://blog.csdn.net/Vinfcent/article/details/78921974
BOOT0和BOOT1的不同配置决定的CPU启动模式(备注:“x”代表接高电平低电平都可)

三种启动地址所对应的内存映射地址:

图片中数字符号的含义:
1: 主闪存存储器 Flash
2: 系统存储器SYSTEMMEMORY
3: SRAM(掉电丢失);
这个启动模式类似于咱们给电脑换系统的时候,可以选择从机械硬盘,固态,或者U盘启动;
注意:虽然有三种启动模式,但是程序无论是从串口下载还是J-Link下载,最后都是下载到Flash里

针对BOOT0和BOOT1的不同接线方式(高电平,低电平,不接线),开发板的下载情况分析如下图:(“x”代表不接线,“√”代表能成功下载)

总结:

从图片中可以看出,J-Link下载的程序在勾选“Reset and Run”后直接运行,程序是一定能下载成功的,但是不一定能运行成功,并且,J-Link下载模式下,但凡BOOT0=1,都不能执行代码,为什么?因为J-Link将代码下载到Flash中,而决定启动模式的BOOT0和BOOT1配置为了启动方式不是从FLash开始的,读不到代码;
在串口下载模式下(注意不使用DTR和RTS电路下载),程序同样被写入Flash;
无论是用哪一种方式下载程序,程序存储的位置都在Flash,然而BOOT0和BOOT1决定了程序从何处开始处理(PC指针的初始值被配置成什么);所以如果程序下载好了之后,需要将BOOT0和BOOT1的接线方式配置成使程序从Flash处开始启动即可,例如:BOOT0 = 0,BOOT1=1即可;

————————————————
版权声明:本文为CSDN博主「wuyuzun」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wuyuzun/article/details/86586088

STM32F103 配置BOOT0 和BOOT1 直接接地还是经过电阻接地?
问:我的STM32F103RET6 挂了,原因是BOOT0 和BOOT1 直接接地导致的,很是奇怪,大家有没有遇到啊?
答:STM32 的硬件设计指导也是建议BOOT0、1 接电阻再接地的。
BOOT0 和BOOT1 分别通过10k 电阻接地,方便串口下载,下载器控制BOOT0 为高电平,下完后又将BOOT0
恢复为低,STM32 复位即可进入用户程序。平常上电直接进入用户程序。
boot0 接10k 电阻接地或者直接接地,都不会引起芯片损毁。

注意:如果JTAG 相关的引脚被用作普通IO,将无法下载(BOOT0 为低电平的情况下)。解决办法是用串口下载一次程序后再用JLINK 下载,或者将BOOT0 配置成高电平后下载。
————————————————
版权声明:本文为CSDN博主「石破天开」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012166958/article/details/80519740

要注意的是,一般不使用内置 SRAM 启动(BOOT1=1 BOOT0=1),因为SRAM掉电后数据就丢失。多数情况下 SRAM只是在调试时使用,也可以做其他一些用途。如做故障的局部诊断,写一段小程序加载到 SRAM中诊断板上的其他电路,或用此方法读写板上的 Flash 或 EEPROM 等。还可以通过这种方法解除内部Flash的读写保护,当然解除读写保护的同时 Flash的内容也被自动清除,以防止恶意的软件拷贝。一般 BOOT0和 BOOT1跳线都跳到 0(地)。只是在 ISP下载的情况下,BOOT0=1,BOOT1=0 ,下载完成后,把BOOT0的跳线接回0,也即BOOT0=0,BOOT1=0 。

插曲:笔者曾经做过一个项目,拿到一块别人的板子和程序来修改,后来做了块板子,烧录程序后发现:烧录后通过烧录工具的“烧录后运行”选项可以正常跑起来,但一旦使程序从FLASH开始运行,则跑不了了。后来发现别人板子上的MCU是烧录过boot的,而自己做的板子是没有烧录boot的,前者程序从0x8003000开始运行,后者程序实际从0x8000000开始运行,把0x8003000处开始运行的程序烧到0x8000000的板子上的结果就是:复位向量地址不正确,导致芯片无法启动,因为0x8003000的程序把中断向量表搬到了0x8003000处。


————————————————
版权声明:本文为CSDN博主「魏波-」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weibo1230123/article/details/80692138

STM32 BOOT0和BOOT1对于下载程序的应用相关推荐

  1. STM32 BOOT0与BOOT1 的应用原理

    很多网友在用 keil 下载 程序时,明明下载线连接正常,偏偏程序就是无法下载,还提示芯片未连接.此时可能出错的原因就在BOOT0上. 首先对BOOT0与BOOT1如何连接及连接方式介绍一下. STM ...

  2. stm32 Boot0,Boot1引脚设置

    Boot0,Boot1引脚设置? (1) Boot0设置为0后,代码将从主Flash当中启动,就我们目前所编程的地方启动,只要程序正常,上电之后都是可以正常工作.这一般作为ISP 程序下载仿真烧写.一 ...

  3. stm32,STC89C51使用串口下载程序

    1. 使用USB转串口下载 1.1 STC89C51 一般买的开发板会有一键下载的硬件电路,但是有时候我们自己的最小系统版,为了能够下载,可以使用串口的方式现在程序,这个我买的圈圈教你学USB的开发板 ...

  4. 图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法

    转自: http://www.it165.net/embed/html/201308/2332.html 用过stm32的人都知道stm32有两种常用下载程序的方法,用串口和jlink.串口下载方法和 ...

  5. STM32F103ZET6程序移植为C8T6+C8T6下载程序flash timeout的解决方案

    文章目录 一.程序移植 :程序移植还是蛮简单的 二.程序下载 : 会出现问题 (一)BOOT0和BOOT1 (二)程序下载 1.代码通用 2.状况不断 3.解决办法 (三)STM32F103C8T6下 ...

  6. STM32关于BOOT0和BOOT1设置,去掉Debug后完成硬件独立运行。

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

  7. stm32数据手册boot_STM32问题集之BOOT0和BOOT1的作用

    一.功能及目的 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序. BOOT1=x BOOT0=0 // 从用户闪存启 ...

  8. ch340串口驱动_如何使用串口来给STM32下载程序

    前言 第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成.后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进 ...

  9. STM32开发板串口 ISP 方式下载程序

    STM32开发板无下载电路也可以下载程序方法 自己设计的stm32开发板,手上无下载器,也没有板载的一键下载电路的情况下解决下载程序方法? 必须具备的条件:USB-TTL模块一个,板上预留有boot0 ...

  10. 使用USB转ttl给stm32下载程序

    电路连接 0准备 最小系统版的BOOT0置1,BOOT1置0 USB转TTL的5V与VCC短接 1连接 USB转TTL STM32 单片机引脚定义 3V3 3V3 TXD PA10 RXD RXD P ...

最新文章

  1. 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)
  2. 腾讯Bugly异常崩溃SDK接入
  3. Python中的collections模块的相关练习
  4. python输出print(x+y)_Python语句序列“x='car';y=2; print(x+y)”的输出结果是_学小易找答案...
  5. Linux下GBK文件编码批量转换UTF-8命令
  6. 网络流量队列优先级相关知识点
  7. 【WP8.1开发】RenderTargetBitmap类的特殊用途
  8. Nginx限速模块初探
  9. c语言c程序由函数构成 每个函数完成相对独立的功能,17秋学期(1709)《C语言程序设计》在线作业  满分...
  10. NodeJs从零构建代理ip池(一)介绍
  11. 开机时设置linux 内核参数 mem,Linux内核开机保留大块内存的方法总结
  12. java数组程序_java数组
  13. 无法访问工作组计算机修复工具,局域网共享一键修复工具
  14. 锐起3.1无盘服务器,[迎新春]锐起3.1无盘XP万能包13V2(IE8版本)
  15. CSS中的伪类选择器、颜色、度量单位、文本字体及文本样式设置
  16. PHP中根据汉字返回拼音
  17. excel表格如何转换成word表格_还不会转换格式?教你一招,Excel表格完美转换成Word文档...
  18. 使用文氏图说明贝叶斯公式如何导出、推导朴素贝叶斯算法以及实例
  19. 河南星年华计算机科技有限公司怎么样,莫让年华逝流水
  20. dr.fone使用教程:如何修复iOS

热门文章

  1. html5 video标签 自定义设置(全屏、音量、下载、画中画)
  2. 23款奔驰C260 L更换内饰最全发光套件,提升车内氛围感
  3. 点云从入门到精通技术详解100篇-基于补全点云与图像像素级融合的障碍物识别
  4. 近20载商海搏击,阿里巴巴和腾讯如何逃离死亡周期?
  5. 星际无限联合创始人赵思博于首届鼎峰问策行业峰会发表演讲
  6. /usr/bin/id: cannot find name for user ID xxx
  7. 专升本英语(00015)
  8. 室内安全wifi燃气报警器设计,时刻监测燃气情况
  9. lua学习之——有道词典“划词”的秘密
  10. 9,000+ 字,彻底征服 Spring AOP!