STM32 HAL SWD下载与串口通信


一、SWD下载方式介绍

SWD是ST公司推出的开源的四线下载方式,分别为3V3、SWD、SWCLK、GND,相比JTAG等可以用较少的线来实现下载和仿真。
请添加图片描述

二、SWD接线

首先你需要购买一个DAPLINK,tb购买15块钱左右。只需要接到STM32F103C8T6最小系统板上面的同样的这四个排针即完成接线。请添加图片描述
而对于类似正点原子的精英板等,则需要在JTAG的牛角排插口里面找到对应的这四个脚接线才能使用。
在这里插入图片描述

三、SWD下载问题

写于2022.4

首先需要在HAL库里面配置sys的debug方式
在这里插入图片描述
然后,需要在keil进行配置
在这里插入图片描述


写于2022.3
然而还没有那么简单,对于正点原子的精英板,我直接下载完全没问题,但是我使用stm32f103c8t6国产板子不可以直接下载,我找了一下,发现以下说明:
在这里插入图片描述

以下是我电脑keil上显示的情况,确实是国产芯片,盖字印成原厂stm32,在这里也要提醒大家,买芯片要注意价钱,到货之后可以看一下印字,如果印字明显质量不好,类似于盗版书籍,大概率是国产货。
在这里插入图片描述
不过我没有按照上面的说明解决这个问题,我也不清楚我这个芯片是什么厂家制造的,卖家也一问三不知。然后我试了一下BootLoader下载,我原本只是根据CH340转TTL需要这么做试一下的,解决问题之后发现有人写过这样的方法了。

https://blog.csdn.net/hurryuptowang/article/details/116567589

这个下载方式需要以下步骤:
Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader;
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中;
Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动
——引用上面链接
同时需要在在这里插入图片描述这个地方在这里插入图片描述设置为CMSIS-DAP Debugger
点击Seetings在这里插入图片描述速度设置为1M,高速不一定可以下载。在这里插入图片描述将"Reset and Run"打勾即可正常下载。

因为使用BootLoader下载、启动都非常的麻烦,当然只是这个国产芯片是这样,我用正点原子的精英板原厂的stm32f103zet6,不需要动boot,所以我在自己打的核心板上将这个排针和跳帽的组合,改成的使用开关,这样一定程度上会方便一点。不过我新的自己打的核心板使用的是自己买的原厂stm32芯片,估计也不需要那么麻烦了。请添加图片描述
在这里插入图片描述

四、串口通信

HAL库配置
在这里插入图片描述
在这里插入图片描述
接线
PA9是TX,需要接SWD的RX端,PA10是RX,需要接SWD的TX端。

程序上,我不喜欢用prinft重定义。

#include"stdio.h"
uint8_t lcd[20];
sprintf((char*)lcd,"Ready!\r\n");
HAL_UART_Transmit(&huart1,lcd,20,50);

以上仅发送,如果要接收的话,最好配置成中断模式。可以参考一下z小旋的blog

https://blog.csdn.net/as480133937/article/details/105013368?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164872204216780274187981%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=164872204216780274187981&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-3-105013368.nonecase&utm_term=%E4%B8%B2%E5%8F%A3&spm=1018.2226.3001.4450


总结

本文仅仅简单介绍了国产stm32f103最小核心板的swd下载和串口通信。创作不易,希望大家可以点赞支持一下!

### 如何获取 SWD 相关工具或资源 为了满足开发需求并实现高效的代码烧录,可以从以下几个方面入手来下载或构建 SWD 工具及其相关资源。 #### 1. 开发者社区开源项目 许多开发者已经基于 ARM 的 SWD 协议创建了开源项目。这些项目通常提供了完整的上位机软件以及硬件设计文件,方便其他开发者学习和使用。例如,在某些开源平台上可以找到名为 **SWD脱机烧录器及上位机源码** 的项目[^3]。这类项目的优点在于它不仅包含了烧录所需的固件代码,还可能附带详细的文档说明,便于理解其实现细节。 #### 2. 技术博客教程分享 一些技术博主会撰写关于 SWD 接口的工作机制的文章,并公开他们的研究成果。比如有作者提到过一篇文章《ARM 代码烧录方案原理详解》[^2] ,其中深入探讨了 SWD 和 JTAG 这两种常见调试接口的区别,同时也介绍了不同类型的代码加载方式(ICP、ISP 及 IAP)。阅读此类资料可以帮助更好地掌握 SWD 下载调试接口的实际应用背景和技术要点。 #### 3. 官方文档支持 如果计划自行编写自定义版本的烧录工具,则需要参考来自芯片制造商如 ARM 提供的技术手册。一位工程师曾表示他通过查阅官方文档成功完成了相应功能模块的设计[^1] 。因此建议访问目标处理器厂商网站查找其产品线匹配的具体指导材料;它们往往涵盖了从基础概念到高级配置选项在内的广泛主题范围内的详尽描述。 #### 4. 商业解决方案 除了利用免费资源之外还可以考虑购买成熟的商业化产品。市场上存在多种专用于嵌入式系统的编程设备和服务提供商,他们能够提供经过验证可靠的软硬件组合解决 方案以加速产品研发进程。 ```python import requests def download_swd_resource(url, destination_folder): try: response = requests.get(url) if response.status_code == 200: with open(f"{destination_folder}/swd_tool.zip", 'wb') as file: file.write(response.content) print("Download completed successfully.") else: print(f"Failed to retrieve resource. Status code:{response.status_code}") except Exception as e: print(e) # Example usage of the function download_swd_resource('https://example.com/swd-tool', './downloads') ``` 上述脚本展示了一个简单的 Python 函数用来自动化网络链接上的 SWD 资料抓取过程。只需替换实际 URL 地址即可执行操作。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值