5.STM32烧录方式讲解

您当前位置: 首页 > STM32-Trikebot > 3、环境搭建

STM32 烧录方式讲解


先给大家讲解一下Bootloader:

STM32 三种启动模式对应的存储介质均是芯片内置的,它们是:

用户闪存: BOOT1=x BOOT0=0 芯片内置的Flash,即主存储器Flash

SRAM: BOOT1=1 BOOT0=1 芯片内置的SRAM 区,就是内存啦。

系统存储器: BOOT1=0 BOOT0=1 芯片内部一块特定的区域,叫做系统存储器。

芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP 程序。

这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM 区。

在每个STM32 的芯片上都有两个管脚BOOT0 和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:

BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。

BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。

BOOT1=1 BOOT0=1 从内置SRAM 启动,这种模式可以用于调试。

要注意的是,一般不使用内置SRAM 启动(BOOT1=1 BOOT0=1),因为SRAM 电后数据就丢失。多数情况下SRAM 只是在调试时使用,也可以做其他一些用途。如做故障的局部诊断,写一段小程序加载到SRAM 中诊断板上的其他电路,或用此方法读写板上的Flash 或EEPROM 等。还可以通过这种方法解除内部Flash 的读写保护,当然解除读写保护的同时Flash 的内容也被自动清除,以防止恶意的软件拷贝。一般BOOT0 和BOOT1 跳线都跳到0(GND),即正常的从片内Flash 运行,只是在ISP 下载的情况下,需要设置BOOT0=1,BOOT1=0 ,下载完成后,把BOOT0 的跳线接回0,这样系统可以正常运行了!!!!!!! 对于一般的应用来说,直接把BOOT0 和BOOT1 引脚接地即可,不用设置跳线,使用IAR 调试程序时可以选择RAM 调试还是Flash调试,与BOOT0 和BOOT1 的配置无关。

设计stm32 的程序时,遇到spi3 的nss 等管脚与JTAG 的管脚共用冲突,所以为了解决该问题,使得spi3 能正常使用,通过库函数GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAG Disable,ENABLE);关闭了JTAG 功能!!!!!!,这样spi3 能正常使用了,但结果导致无法通过JTAG 烧录程序了。


烧录连线图:(通过杜邦线连接)

blob.png

图中   左侧为STM32 系统                                右侧为USB-TTL 烧录器

(注意:靠近排针一边的跳线帽在烧录的时候需要为1,烧录完以后需要把跳线帽重新插回0,这样单片机才正常可以工作)


一.首先在能正常工作的最小系统板,开发板上将232 电路调通,保证可用,就是无障碍的和PC 通讯。然后将写好编译好的HEX 文件载入下载即可,这里STM32 的识别hex 文件的,这点比LM3S 系列的ARM 强。首先要到网上下载Flash_Loader_Demonstrator_V2.1.0_Setup 串口下载的上位机软件(我们已提供该软件),去ST 官方网站去下载也可以。


二.安装软件并进行相关设计

blob.png

确认你的串口设置OK,注意串口号对应即可。


三.连接下载

点击Next, 注意当你单击Next 下一步的时候,可能会弹出一个对话框:

blob.png

检查两个Boot 引脚,应该是Boot0=1;Boot1=0(接地),设置完成,对MCU 重新上电就可以,继续Next。

blob.png

连接OK,Next。

blob.png

这一步将自动选择器件,然后NEXT。

blob.png

在Download from file 中选择你的HEX 文件,Next。

blob.png

下载程序完成。


另一种方式是Jlink烧写包括SWD四线接法,一种是JTAG方式接法,我们的开发板采用SWD四线接法,具体方法可以网上查找方法,也可以咨询我们客服解答。