赞
踩
参考文件来源:AN4488: STM32F4xxxx MCU 硬件开发入门
什么是启动模式,这个类似于我们使用的个人电脑在开机的时候可以进入到电脑的 BIOS (标准输入输出系统),在 BIOS 软件中可以选择在什么样的存储介质来启动 Windows 系统,比如可以选择读取在硬盘,光盘,或是 U盘中的系统进行启动。
同样 stm32 芯片也可以选择在什么样的存储介质中来启动,并且为了方便切换所以预留了两个 boot 启动模式专用引脚,这个引脚分别为 BOOT0 和 BOOT1,通过给这两个引脚提供不同的电平来告诉芯片从那个存储介质中读取程序进行执行。模式主要有以下三种(下图表示):
主闪存存储器:STM32内置的Flash,一般使用 JTAG或者 SWD接口下载程序固件时,程序将被下载到这里,芯片重启后也将直接从这里读取并启动程序。
系统存储器: 这种模式启动的程序功能是由芯片厂家设置的。这种启动方式一般情况不使用。系统存储器是芯片内部一块特定的区域,STM32 出厂时由ST公司在这个区域内部预置了一段BootLoader, 即我们常说的 ISP程序, 这是一块ROM, 出厂后无法修改。
我们选用这种启动模式时,大多是为了使用 串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的 Flash 中。但是这个下载方式需要以下步骤:
Step1:将 BOOT0 设置为 1,BOOT1 设置为 0,然后按下复位键,这样才能从系统存储器启动 BootLoader
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中
Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从 Flash 中启动。所以使用串口下载程序较为 麻烦, 需要频繁切换BOOT0与BOOT1。
内置 SRAM:内置SRAM,SRAM没有程序存储的能力,这个模式一般用于频繁的程序调试,这样可以减少flash的擦写次数,保护flash。
这种模式可以用于 程序调试。 假如只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到SRAM中
目前习惯的boot模式是主Flash启动,使用ST-LINK+keil5 debug起来比较方便,速度也比较快
有时候会出现SWD引脚被错误配置为其他用途、晶振频率设置不对(8M和25M)之类的误操作,板子就无法烧录程序了,此时可以1.切换boot模式清除代码,2.通过按住复位引脚的方式尝试烧录程序
PS:SWD下载引脚配置失误经常出现在标准库的使用中,使用CubeMX配置的HAL库基本不会出现。
直接写死BOOT0=0,减小空间
参考文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。