1. 说明
有时需要手动烧写STM32F103C8,除了直接在Keil或者IAR中点击下载(或者调试之外),还可以手动以命令方式使用JLink烧写STM32F103C8,这种方式很容易做成量产模式。当然除了使用JLink烧写之外,还可以使用串口烧写(如使用跳线),这种方式需要串口可以使用的时候使用,并且需要时设置Boot跳线。
本文中使用SWD模式对STM32F103C8进行烧写,使用的软件从Keil中提取(也可以下载SEGGER的JLink安装,但一定要保证很够正常调试(如果JLink硬件与安装的JLink软件不兼容,则无法烧写))。本文中使用的JLink有如下文件:
其中,JLink.exe是主程序,USBDriver是驱动文件文件夹,其它的dll文件是运行库文件,若需拷贝JLink.exe需要将这些dll文件一同拷贝。
2. 使用命令烧写
烧写过程中(准确来说是JLink.exe的运行过程中),JLink和STM32F103C8必须正确连接到计算机上。
启动Jlink之后,其会自动连接上Jlink硬件并扫描芯片,如上图中所示,本次使用的JLink为JLink V8,芯片内核为Cortex-M3。启动JLink之后,可以输入英文?获取帮助,本次使用JLink软件为JLink V4.96d,不同的版本命令可能不同。下面是JLink V4.96d的帮助:
JLink的命令很多,其中与烧写有关的命令最主要的有以下几条:
- device命令:其格式为Device 设备名,用于选定将要烧写的设备
- loadfile命令:其格式为loadfile 文件路径 [烧写地址],烧写的文件可以是bin文件,hex文件,mot文件,srec文件,烧写地址仅当烧写bin文件时才需要。
下面是一个烧写STM32F103C8的例子:
usb 0
si 1
h
speed 4000
device STM32F103C8
loadfile C8.hex
exit
除了主要的命令,还有几条的命令含义如下:
- usb 0:连接到usb。
- si 1:工作在SWD模式。
- h:单片机停机。
- speed 4000:速度为4000KHz。
- exit:退出JLink。
当然一条条执行命令效率并不高,实际使用时,可将命令保存在一个txt文件中,使用Jlink.exe txt文件路径运行这些命令。
这样就方便多了,只要编写一个程序(可以使用支持shell调用的语言),按上述方式调用JLink.exe就可完成烧写操作。甚至还可以使用程序生成JLink.exe的脚本,然后调用JLink.exe,完成烧写操作。
下面是一个使用批处理调用的例子: