第2章 程序下载与调试
第二章 程序下载与调试
1. STM32串口程序下载
STM32F4 的程序下载有多种方法: USB、串口、 JTAG、 SWD 等,这几种方式,都可以用来给 STM32F4 下载代码。不过,最简单也是最经济的,就是通过串口给 STM32F4 下载代码。本节,我们将向大家介绍,如何利用串口给 STM32F4(以下简称 STM32)下载代码。
STM32 的串口下载一般是通过串口 1 下载的, 本手册的实验平台 ALIENTEK 探索者STM32F4 开发板,不是通过 RS232 串口下载的,而是通过自带的 USB 串口来下载。看起来像是 USB 下载(只需一根 USB 线,并不需要串口线)的,实际上,是通过 USB 转成串口,然后再下载的。
下面,我们就一步步教大家如何在实验平台上利用 USB 串口来下载代码。
首先要在板子上设置一下,在板子上把 RXD 和 PA9(STM32 的 TXD), TXD 和 PA10(STM32的 RXD)通过跳线帽连接起来,这样我们就把 CH340G 和 MCU 的串口 1 连接上了。这里由于ALIENTEK 这款开发板自带了一键下载电路,所以我们并不需要去关心 BOOT0 和 BOOT1 的状态,但是为了让下下载完后可以按复位执行程序,我们建议大家把 BOOT1 和 BOOT0 都设置为 0。
这里简单说明一下一键下载电路的原理,我们知道, STM32 串口下载的标准方法是两个步骤:
-
把B0按V3.3(保持B1接GND)
-
按一下复位按键
通过这两个步骤,我们就可以通过串口下载代码了,下载完成之后,如果没有设置从0X08000000 开始运行,则代码不会立即运行,此时,你还需要把 B0 接回 GND,然后再按一次复位,才会开始运行你刚刚下载的代码。所以整个过程,你得跳动 2 次跳线帽,还得按 2 次复位,比较繁琐。而我们的一键下载电路,则利用串口的 DTR 和 RTS 信号,分别控制 STM32的复位和 B0,配合上位机软件(flymcu,即 mcuisp 的最新版本),设置: DTR 的低电平复位, RTS 高电平进 BootLoader,这样, B0 和 STM32 的复位,完全可以由下载软件自动控制,从而实现一键下载。
接着我们在 USB_232 处插入 USB 线, 并接上电脑, 如果之前没有安装 CH340G 的驱动(如果已经安装过了驱动,则应该能在设备管理器里面看到 USB 串口,如果不能则要先卸载之前的驱动,卸载完后重启电脑,再重新安装我们提供的驱动),则需要先安装 CH340G 的驱动
在驱动安装成功之后,拔掉 USB 线,然后重新插入电脑,此时电脑就会自动给其安装驱动了。在安装完成之后,可以在电脑的设备管理器里面找到 USB 串口(如果找不到,则重启下电脑)
更多内容可以参考:如何使用串口来给STM32下载程序 - whik - 博客园
2. STLINK下载与调试程序
上一节,我们介绍了如何通过利用串口给 STM32 下载代码,并在 ALIENTEK 探索者STM32F4 开发板上验证了我们程序的正确性。 这个代码比较简单,所以不需要硬件调试,我们直接就一次成功了。可是,如果你的代码工程比较大,难免存在一些 bug,这时,就有必要通过硬件调试来解决问题了。
串口只能下载代码,并不能实时跟踪调试,而利用调试工具,比如 JLINK、 ULINK、 STLINK等就可以实时跟踪程序,从而找到你程序中的 bug,使你的开发事半功倍。这里我们以 STLINK为例,说说如何在线调试 STM32F4。
STLINK 支持 JTAG 和 SWD,同时 STM32 也支持 JTAG 和 SWD。所以,我们有 2 种方式可以用来调试, JTAG 调试的时候,占用的 IO 线比较多,而 SWD 调试的时候占用的 IO 线很少,只需要两根即可。
首先,用 STLINK 进行下载与调试,大家要在硬件上,把 STLINK 用 USB 线连接到电脑usb 和板子的 JTAG 接口上。
STLINK 的驱动安装比较简单,我们在这里就不说了。在安装了 STLINK 的驱动之后,我们接上 STLINK,并把 JTAG 口插到探索者 STM32 开发板上,打开 Options for Target 选项卡,在 Debug 栏选择仿真工具为 ST-LINK Debugger:
更多内容可以参考:STM32下载程序的五种方法 - 知乎
2024.9.25 第一次修订,后期不再维护
2024.12.16 修补部分内容