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下载和串口通信。创作不易,希望大家可以点赞支持一下!

  • 14
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您可以使用Python的PyQt5库与STM32HAL库进行串口通信。以下是一个基本的示例代码,以及一些步骤来设置串口通信。 1. 在您的Python代码中,导入PyQt5和serial模块: ```python from PyQt5.QtSerialPort import QSerialPort from PyQt5.QtCore import QIODevice ``` 2. 创建一个串口对象并设置参数: ```python serial_port = QSerialPort() serial_port.setPortName("COM1") # 设置串口号,根据实际情况修改 serial_port.setBaudRate(QSerialPort.Baud115200) # 设置波特率,根据实际情况修改 serial_port.setDataBits(QSerialPort.Data8) # 设置数据位数 serial_port.setParity(QSerialPort.NoParity) # 设置校验位 serial_port.setStopBits(QSerialPort.OneStop) # 设置停止位 ``` 3. 打开串口: ```python if serial_port.open(QIODevice.ReadWrite): print("串口已打开") else: print("无法打开串口") ``` 4. 使用串口进行数据发送: ```python data = b'Hello' # 要发送的数据 serial_port.write(data) ``` 5. 使用串口接收数据: ```python if serial_port.waitForReadyRead(1000): # 等待接收数据,超时时间为1秒 received_data = serial_port.readAll() # 读取接收到的数据 print(received_data) else: print("未接收到数据") ``` 6. 关闭串口: ```python serial_port.close() ``` 请注意,在与STM32HAL库通信之前,您需要在STM32上编写一段代码来处理串口通信。您可以参考STM32HAL库文档来了解如何设置和处理串口通信。 希望这可以帮助您开始与STM32HAL库进行串口通信。如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值