【STM32】使用ST-LINK V2下载程序

本文详细介绍STM32单片机程序下载流程,包括启动模式选择、ST-LINK使用、驱动安装、硬件连接及程序下载步骤。适用于初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32有两种烧录接口,分别是JTAG和SWD接口。
Stlink 支持JTAG和SWD接口,本文介绍如何使用ST-LINK对stm32进行仿真调试。

一.STM32的三种启动方式

STM32F10x系列芯片可通过BOOT[1:0]引脚选择三种不同启动模式。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。如下表格
在这里插入图片描述
主闪存存储器:
即在线仿真调试方式,是STM32内置的Flash,使用SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。

系统存储器:即串口下载方式。

内置SRAM:无程序存储功能,一般用于程序调试。

二.stlink

ST-Link是ST意法半导体为评估、开发STM8/STM32系列MCU而设计的集在线仿真与下载为一体的开发工具,支持JTAG/SWD/SWIM三种模式。本文以下图stlink为例:
(图为ST-LINK V2,某宝10到20元)
在这里插入图片描述
支持所有带JTAG/SWD接口的STM32系列单片机

三.驱动安装

官网下载较慢,建议直接复制以下链接用迅雷下载:
http://33.down.lfpnrqy.cn:89/ziyuan/ST-LINK_V2qudong.rar

下载解压后点击.exe文件安装驱动,如下图所示:
在这里插入图片描述
然后鼠标右键我的电脑—属性—设备管理器—通用串行总线设备。如果可以看到stlink驱动,如下图所示。表示驱动已经安装完成。(要将stlink连接到电脑才会出现)
在这里插入图片描述
我这里有很多个,每个人的电脑都不同,有一个就行。

四.硬件连接

1.以stm32f103c8t6核心板为例,stlink的VCC,GND,SWDIO,SWCLK与单片机的四个引脚对应连接。(注意要连接到STM32的引脚;如果有其他供电方式,则无需连接VCC线)
在这里插入图片描述
在这里插入图片描述

2.以野火指南者开发板为例(注意跳线帽的位置,将杜邦线连接到SWD)
在这里插入图片描述

同样将stlink的四个引脚对应连接到开发板的四个引脚
在这里插入图片描述

五.下载程序

驱动安装完成并且连接相应引脚后将stlink连接到电脑,然后在keil里进行相应工程配置。如下图所示

在这里插入图片描述
点击Debug—选择ST-LINK
在这里插入图片描述
点击Setting,选择SWD模式
在这里插入图片描述
点击Flash Download,选择复位并执行。(点击Add即可选择其他容量的单片机,本文以指南者开发板为例,则FLASH选择High-density,即为高容量)
在这里插入图片描述

设置完成后编译成功并下载(先编译工程,然后点击Load键下载)
在这里插入图片描述

显示成功
在这里插入图片描述
开发板成功运行程序(如果没有反应,拔出stlink后再连接到电脑进行尝试)
在这里插入图片描述
除此之外,stlink还支持在线仿真调试程序,本文不作介绍。

ESP8266是一款常用的WiFi模块,它支持通过MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)连接到物联网服务器,实现设备之间的通信。以下是基本步骤: 1. **安装库**: - 首先,你需要在Arduino IDE中安装`PubSubClient`库,这是一个用于ESP8266与MQTT服务器通信的常用库。 2. **配置WiFi连接**: - 设置ESP8266连接到你的Wi-Fi网络,包括SSID和密码。 3. **设置MQTT客户端**: ```cpp #include <ESP8266WiFi.h> #include < PubSubClient.h > WiFiClient client; PubSubClient mqttClient(client, "your_broker_address", "username", "password"); ``` 这里"your_broker_address"替换为你的MQTT服务器地址,"username"和"password"则是登录账号和密码。 4. **连接到MQTT服务器**: ```cpp void connectToMqtt() { mqttClient.setServer("your_broker_address", 1883); while (!client.connected()) { if (client.connect("ESP8266Client")) { Serial.println("Connected to MQTT broker"); mqttClient.subscribe("$SYS/#"); // 订阅所有主题 } else { delay(5000); // 尝试重连,延时5秒 Serial.print("Attempting to reconnect..."); } } } ``` 5. **发布和订阅主题**: - 发布数据到主题: ```cpp void publish(String topic, String message) { mqttClient.publish(topic, message); Serial.println("Published message to " + topic); } ``` - 订阅并处理接收的数据: ```cpp void loop() { if (mqttClient.connected()) { mqttClient.loop(); // 处理接收到的消息 } // ...其他代码... } ``` 6. **断开连接**: ```cpp void stopMqtt() { mqttClient.disconnect(); Serial.println("Disconnected from MQTT broker"); } ``` 记得根据实际情况调整代码,并在`loop()`函数中添加相应的数据处理逻辑。当你有新的消息要发送或需要监听来自服务器的信息时,只需调用上述相应方法即可。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值