STM32 单片机的BOOT0 和BOOT1使用注意事项

如图所示,一般情况下如果我们想用用串口下载代码,则必须配置BOOT0为 1, BOOT1为 0,而如果想让 STM32 一按复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设,请参考正点原子的一键下载电路,这个电路比较好,不用繁琐的切换boot电平。

原理图:

启动方式:

1,第一种启动方式是最常用的用户FLASH启动。默认启动方式。

2, 第二种启动方式是STM32内嵌的SRAM启动。该模式用于调试 第三种启动方式是系统存储器启动方式。STM32中自带的BootLoader就是在这种启动方式中,如果出现程序硬件错误的话可以切换BOOT0/1到该模式下重新烧写Flash即可恢复正常。

首先对BOOT0与BOOT1如何连接及连接方式介绍一下。

STM32 单片机的BOOT0 和BOOT1 应用原理
STM32 三种启动模式对应的存储介质均是芯片内置的,它们是:
1)主闪存存储器= 芯片内置的Flash。这也是正常工作模式
2)SRAM = 芯片内置的RAM 区,就是内存啦。
3)系统存储器= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说
的ISP 程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM 区。
在每个STM32 的芯片上都有两个管脚BOOT0 和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复

位后从哪个区域开始执行程序,见下表:

要注意的是,一般不使用内置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 。

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

注意:如果JTAG 相关的引脚被用作普通IO,将无法下载(BOOT0 为低电平的情况下)。解决办法是用串口下载一次程序后再用JLINK 下载,或者将BOOT0 配置成高电平后下载。
 

发布了112 篇原创文章 · 获赞 120 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/qq_36958104/article/details/102966926