STM32有两种常用的烧录方式,一是利用JLink和STLink调试下载,二是利用串口线直接下载

一、ISP(In-System Programming)

在系统编程,使用引导程序(Bootloader)加上外围UART/SPI等接口进行烧录。

二、ICP (In-circuit programmer)

在电路编程,使用SWD/JTAG接口

这两种方式有什么区别以及怎么用我们得先了解一下STM32的地址映射

看Block0中有两块标为橙色的,Flash和System memory

  • Main memory 主存储区、存放代码的地方

  • System memory系统存储区、System memory是STM32在出厂时内置Bootloader的地方

STM32的启动方式

STM32有两个BOOT引脚,通过配置不同的高低电平,可以让单片机从不同的地址开始运行。

  • BOOT0=0, BOOT1任意(JLink和STLink调试下载:ICP)

通常我们是在Main memory 主存储区(0x0800 0000)运行程序,BOOT0引脚拉低即可。

这种情况,KEIL软件给STM32烧录程序,就是直接在这个地址烧录,烧录完,直接在这个地址处运行。

  • BOOT0=1,BOOT1=0(串口直接下载:ISP)

这种情况就用在使用串口方式给STM32烧录程序,这时单片机从系统存储器(0x1FFF 0000)启动,运行的是出厂预置的BootLoader程序,可以接收串口发来的程序,并将其写入Main memory(0x0800 0000),程序烧录完成后,再将BOOT0引脚拉低,Main memory(0x0800 0000)处运行刚烧录的代码了。

  • BOOT0=1,BOOT1=1

这种情况是从内存中启动,内置SRAM(也就是STM32的内存中),既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。

STM32程序的常用的两种烧录方式相关推荐

  1. python高级语言翻译成机器语言的方式有两种_将高级语言编写的程序翻译成机器语言程序,采用的两种翻译方式是( )。...

    展开全部 正确答案是A, 编译和解释. 原因是:编译和解释是将高级语言636f70793231313335323631343130323136353331333366306466编写的程序翻译成机器语 ...

  2. YUV常用的两种保存方式_YUY2和YV12

    转自:http://blog.csdn.net/yiheng_l/article/details/3784874 简单的说,YUV的格式在存储上有两类布局: Packed和Plannar.Packed ...

  3. hadoop学习之----------IntelliJ IDEA上实现MapReduce中最简单的单词统计的程序(本地 和 hadoop 两种实现方式)...

    idea上的maven中的pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xm ...

  4. 常用的两种spring、mybatis 配置方式

    转载自http://blog.csdn.net/qh_java/article/details/51601139 在之前的文章中总结了三种方式,但是有两种是注解sql的,这种方式比较混乱所以大家不怎么 ...

  5. Ajax提交Form表单的两种简单方式

    在现在的项目开发中,ajax的应用是必不可免的,最为基本的就是利用ajax的异步处理方式来向后台提交数据.关于ajax提交表单我利用到了两种简单的方式. 方法一## 先获取表单里面的数据,再通过aja ...

  6. PHP教程:WebService最常用的两种方法

    国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件) 客户端 代码: 01.   02. ...

  7. 最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)

    From: http://www.cnblogs.com/lanxuezaipiao/p/3703988.html 导读 1. 什么是序列化? 2. 为什么要序列化?好处在哪里? 3. C++对象序列 ...

  8. 程序的两种执行方式,静态语言和脚本语言

    程序的两种执行方式,静态语言和脚本语言 文章目录 程序的两种执行方式,静态语言和脚本语言 编译和解释 静态语言和脚本语言 编译和解释 编译:将源代码一次性转换成目标代码的过程.(编译一次后,若需再次执 ...

  9. 在Vue-cli脚手架中引入图片最常用的两种方法

    CommonJS API定义了很多普通应用程序(主要指非浏览器的应用)使用的API,require就说其中之一,我们通常需要在组件中引入图片时,可以在Data里使用这个方法require(" ...

最新文章

  1. uniapp 子组件 props拿不到数据_Vue组件间的通信
  2. android 16进制 全透明_你有几种实现方案Android 设备唯一标识?
  3. 67 cookie常用方法
  4. CSS:盒子模型和清除float浮动的三种常用方法
  5. 知道一个数组某个index对应的值 不知道下标的情况下删除该值
  6. ashx中Response.ContentType的常用类型
  7. 如何用python写数值运算_如何理解Python的数值运算?
  8. mysql数据库mha_MySQL高可用性大杀器之MHA
  9. 李宏毅 || 机器学习笔记一
  10. 软件测试基础理论选择题(含答案)
  11. 记录自己装Ubuntu18.04+Win10 1803双系统,采用UEFI启动模式
  12. 洛谷Java入门级代码之分汽水
  13. 西瓜书学习之绪论部分
  14. 英文字母的大小写互换,将所有都变成小写,所有都变成大写 位运算实现
  15. 看我骚操作‘破解’某查查app的sign以及某眼查的Authorization!
  16. 苹果浏览器(Safari浏览器)打开网页“不安全”警告的解决方案
  17. mac笔记本部分按键失灵
  18. QGIS软件安装和汉化
  19. Java温故而知新-递归
  20. 数据结构__树的学习及宠物店功能实现

热门文章

  1. 李小璐JAVA,抖音爆火的随机点名Java实现原理,没有连接数据库
  2. 【小玩意】访客记录查询
  3. [转]论语新解(上篇)(1)
  4. IOS UITextView 和 UITextField 联想输入法字数限制
  5. 英特尔ROG京东三强携手,最强电竞装备亮相斗鱼嘉年华
  6. java11从list中取出某个属性_java8从list集合中取出某一属性的值的集合案例
  7. RocketMQ延迟消息
  8. 一次 RocketMQ 顺序消费延迟的问题定位
  9. 英语介词学习(基础)
  10. 视频教程-Tableau从入门到大伽视频教程-大数据