[应用相关] STM32系统板通过串口下载程序

[复制链接]
1327|9
Zhiniaocun 发表于 2025-9-6 11:49 | 显示全部楼层 |阅读模式
硬件连接
使用的是带板载CH340的STM32F103C8T6最小系统板,直接通过图中左上角Micro USB接口连接到电脑即可,如果是外接串口模块,务必把串口模块的TX连接到PA10,RX连接到PA9,因为STM32只能通过USART1进行ISP下载。

8986968bbaf5b01195.jpg


软件设置
下载串口驱动

下载地址:CH340驱动

下载完毕后双击.exe文件安装即可

安装完毕后,连接硬件,打开电脑设备管理器,可以看见如下图所示成功识别到CH340串口(单片机端必须连接到电脑后才会显示),端口号是COM8(不同电脑分配端口号可能不同),即为驱动安装成功。

5472268bbaf542ef0d.png


下载烧录软件

STM32可以通过FlyMcu软件实现串口烧录。

FlyMcu下载地址

这是一款绿色软件,无需安装,解压后点击.exe文件即可使用,软件开始界面如下图:

9916368bbaf4bd4f4d.png


点击搜索串口,自动搜索已连接的串口。

1786068bbaf4796c4c.png


通过窗口上方选项卡可以自由设置串口端口和串口传输波特率(bps),其中波特率默认为115200bps,由于在前面设备管理器中看见CH340连接到COM8,故这里手动把端口设为COM8。

6150968bbaf4241917.png


7330868bbaf3e4dff2.png


根据单片机型号设置复位模式和BootLoader,对于STM32F103C8T6,选择RTS的低电平复位,DTR高电平进BootLoader即可。

8494668bbaf38c5f3a.png


烧录验证

通过串口烧录首先需要编译程序生成.HEX文件:

打开Keil工程,这里我写了一个通过按键控制LED灯亮灭的简单程序:

  while (1)
  {
    /* USER CODE END WHILE */
                if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)){
                        HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
                }else{
                        HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
                }
    /* USER CODE BEGIN 3 */
  }



按键按下,LED灯亮,按键抬起,LED灯熄灭。

打开Keil编译配置窗口(魔术棒)。

8843868bbaf30ea346.png


在Output选项卡下勾选Create HEX File,点击OK保存配置并退出。

3962168bbaf2b2c0c9.png


HEX文件生成路径即为图中显示路径,一般在编译后产生的工程同名文件夹下(这里的工程名为GPIO)。

551968bbaf26536cc.png


点击Build编译工程,成功编译后打开工程所在目录,选择工程同名文件夹,显示可以找到.hex文件。在烧录工具FlyMcu中选择对应路径下的文件。

9893768bbaf209cab7.png


点击开始编程,此时发现软件一直卡在开始连接界面,如图:

8969768bbaf1b94922.png


这是因为这款最小系统板没有独立连出Boot引脚可以手动调节,而是把两个Boot引脚均通过一个10k电阻下拉到GND(如下图原理图),单片机在上电后读取到Boot0=0,Boot1=0直接进入内置Flash中。

2245968bbaf162c4f0.png


224468bbaf1195c51.png


故需要通过按下Reset复位,使得单片机重新读取Boot值进入BootLoader,之后便能显示成功烧录,如下图:

8931968bbaf0ba4f7a.png


但是此时发现单片机未能像前程序预设一样通过按键控制LED灯的亮灭,原因是此时任然停留在BootLoader模式下,需要按下reset按键复位单片机,使之再次读取Boot引脚从而退出BootLoader模式,然后便能正确执行代码逻辑。
————————————————
版权声明:本文为CSDN博主「ONGroung」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2501_93046934/article/details/150270317

磨砂 发表于 2025-11-6 12:21 | 显示全部楼层
BOOT0=1,BOOT1=0:进入系统存储器模式(BootLoader),用于串口下载
晓伍 发表于 2025-11-6 14:46 | 显示全部楼层
开发板上电前需确保跳线帽正确连接。若开发板未预留SWD接口,可通过USB转TTL模块的3.3V拉高BOOT0实现临时配置
八层楼 发表于 2025-11-6 17:10 | 显示全部楼层
STM32的TXD接USB转串口模块的RXD,RXD接TXD
观海 发表于 2025-11-6 19:34 | 显示全部楼层
CH340等模块可由USB供电,但需确保电压稳定
guanjiaer 发表于 2025-11-6 21:52 | 显示全部楼层
若设备管理器显示“USBSerial”等未识别设备,需手动更新驱动或多次尝试安装
heimaojingzhang 发表于 2025-11-7 07:43 | 显示全部楼层
FlyMCU支持自动检测串口、HEX文件烧录及DTR/RTS复位控制
keaibukelian 发表于 2025-11-7 10:12 | 显示全部楼层
波特率建议设为115200;勾选“DTR低电平复位,RTS高电平进BootLoader”,部分软件需取消“编程后执行”以避免覆盖主程序
paotangsan 发表于 2025-11-7 12:42 | 显示全部楼层
下载完成后断电并恢复BOOT引脚默认配置(BOOT0=0,BOOT1=0),否则程序无法运行
renzheshengui 发表于 2025-11-7 15:06 | 显示全部楼层
确认下载时已正确切换回主闪存模式(BOOT0=0),部分开发板需手动插拔跳线帽强制复位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

312

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部