学习了一段时间stm32单片机, 一直没有搞明白这个Boot 引脚的作用,经过找资料,才算搞明白boot设置, 所谓的启动, 就是我们在程序下载完成后, 重新启动芯片时, SYSCLK的第四个上升沿, BOOT引脚值4会被锁存, 用户可以通过设置BOOT引脚的电平来设置 相应的启动模式.
BOOT1 | BOOT0 | 模式名称 | 说明 |
X | 0 | 主闪存存储器 Main Flash memory |
主闪存存储器被设为启动区域 |
0 | 1 | 系统存储器 System memory |
系统存储器被设为启动区域 |
1 | 1 | 内置SRAM Embedded Memory |
内置SRAM被设为启动区域 |
即为Flash, 一般情况下我们使用JTAG或者SWD 下载程序就是下载到这个里面, 当启动时候就会从这里开始启动
这种模式启动程序功能是由厂家设置的,一般来说用的比较少. 芯片内部有一块特定的ROM区域, 在STM32出厂时候, 预置了一段BootLoader, 就是我们常说的ISP程序, 是ROM区域,出厂后无法修改. 这种启动模式主要是用于串口下载程序,在厂家的BootLoader中提供了串口现在的附件, 可以通过这个固件将程序下载到Flash中,但这种方式下载比较麻烦,通常经过三个步骤:
1. BOOT0 = 1,BOOT1 = 0, 按下复位键,这样方可启动BootLoader;
2.在BootLoader的支持下,可以通过串口将程序下载到Flash中;
3.程序下载完成后,有需要将BOOT0 = 0, 手动复位.
即SRAM, 没有程序存储能力, 一般用来程序调试, 如果我们修改的代码比较少, 需要擦除整个Flash, 相对比较耗时间, 可以用这个模式启动代码, 就是放在内存中, 快速调试, 程序调试完成,再将程序下载到SRAM中.
1. 配置为主闪存模式, BOOT0为0, BOOT1任意
2. 有时候在开发调试过程中由于某些原因导致内部Flash锁死, 无法使用SWD或JTAG调试, 无法读到设备, 可以通过BOOT模式重新 刷写代码, 修改为系统存储器启动, ST 出厂自带Boot Loader程序, SWD和JTAG都是专用接口, 程序烧写完成后,BOOT模式重新更换到主闪存存储器模式即可