目录标题
前言
使用调试器下载程序又快有稳定还能使用调试功能,当然是下载调试的首选。但是拓展下串口下载程序的知识作为下载的备选方案也是很有必要的。
1、理论知识
ICP :使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。
ISP :使用引导程序(Bootload)加上外围UART/USB等接口进行烧录。
IAP:软件自身实现在线电擦除和编程的方法,不使用任何工具。程序通常分成两块,分别为引导程序和应用程序。
我们用串口下载程序就是ISP。
接下来介绍下STM32的启动模式。从STM32参考手册上,可以查阅到,STM32的启动模式,共有下列三种,可以通过BOOT0和BOOT1电平的不同组合,来选择不同的启动模式。
BOOT1 | BOOT0 | 启动模式 | 启动地址 | 说明 |
---|---|---|---|---|
X | 0 | 主闪存存储器Flash | 0x0800 0000 | 中断向量表定位于FLASH区,主闪存被选为启动区域,最常用,用户代码。同时复位后PC指针位于0x2000000处 |
0 | 1 | 系统存储器 | 0x1FFF F000 | 系统存储器被选为启动区域,程序功能由厂家设置。中断向量表定位于内置Bootloader区,此时可通过串口下载程序的二进制文件到flash区 |
1 | 1 | 内置SRAM | 0x2000 0000 | 内置SRAM被选为启动区域,中断向量表定位于SRAM区,同时复位后PC指针位于0x2000000处 |
2、串口下载具体操作
2.1、硬件准备
USB-TTL模块、STM32单片机、杜邦线
按照下面的接线表格进行连接
单片机(以STM32F103C8T6为例) | USB-TTL模块 |
---|---|
5V | 5V |
GND | GND |
PA9(USART1_TX) | RXD |
PA10(USART1_RX) | TXD |
注意:
- 1、单片机的RX、TX和USB-TTL模块的RX、TX要互斥的连接。
- 2、串口下载只能使用串口1,对于其他型号单片机请提前查阅引脚功能表。
- 3、单片机在有外部供电的情况下5V引脚接不接都可
2.2、软件准备
需要下载一个串口下载软件FlyMcu。
链接: FlyMcu下载地址
下载下面的压缩包即可。
压缩包解压后会有一个.exe文件,直接双击运行即可(免安装)。
2.3、设置单片机的启动模式为系统存储器启动
要让单片机进入系统存储器启动模式有两种方式:
- 1、在单片机上电前将BOOT0配置为1,将BOOT1配置为0(通过拔插跳线帽使BOOT引脚与VCC或GND短接来实现),这样单片机一上电就进入系统存储器启动模式了。
- 2、若单片机已上电,BOOT模式还没配置,可以配置跳线帽后按单片机的复位键使其进入系统存储器启动的模式。
2.4、软件配置
我们打开FlyMcu后,可以看到下面的界面,我们按着下面的步骤进行配置。
1、点击搜索串口,然后选中串口。
2、配置通信波特率。我们选择57600/76800均可,其它的只要别太高太低应该也是可以的。
3、选择一个Hex文件。如果有不会生成的可以看下面的"附:生成hex文件 "。
4、勾选"校验"、"编程后执行"。
5、取消勾选"编程到Flash时写选项字节"。
6、选择"DRT的低电平复位,RST高电平进BootLoader".
7、接下来就可以点击"读器件信息"了,此时若右侧窗口出现了器件信息表明连接成功了
2.5、下载程序
此时我们点击"开始编程",右下角会有一个进度条,等待进度条结束,程序就通过串口下载到单片机了。若你的程序有现象(比如灯会闪烁等),我们就可以看到。
若此时点击复位或重新上电会发现刚才的现象消失了,不过不用担心,这是因为现在单片机的启动模式还是系统存储器,我们只需要将跳线帽插回原来的样子(BOOT0连GND,BOOT1连GND),此时点击复位,单片机会从主闪存Flash启动,此时程序就会正常运行了。
附:生成hex文件
1、我们在keil中打开要调试下载的工程。
2、点击魔法棒
3、点击"Output"
4、勾选"Create HEX File"
5、点击OK
6、编译工程
7、此时我们在工程文件夹的Objects就可以看到.hex文件了。