STM32中SWD下载不进去的解决方法
这是我第一次写自己的博客,希望以后写博客可以当做自己的个人习惯并坚持下去,作为技术分享,也欢迎各位大佬前来指正。本人本科学习的机械电子工程,了解机械制图、嵌入式编程、目前刚好学习了PCB制板,正在向着全栈工程师的目标进发(自嘲一波,各位见谅,哈哈)
惨案现场以及经过
第一次绘制PCB,目的是画STM32F103为主控的板子。当收到板子后,当我兴致勃勃测试完电源电路,LED指示灯开始亮灯的时候,内心确实很兴奋。但是当我测试SWD下载电路,却发现一直报一个非常奇怪的错误,能检测到芯片但是下载不进去?! 一直报错 No target connected。
尝试解决
1, 怀疑是自己SWD下载电路的问题
但后来自己查阅资料后,发现下载电路没有问题,网上的SWD开源电路一大堆,相信SWD调试电路一般都不会出问题。再者说了,既然keil能检测到STM32的芯片,说明SWD电路是没问题的。
2, 启动方式的问题
STM32的程序启动方式其实也影响着下载方式。我们先看一下BOOT选择的设置不同有什么影响。
通过这个图片,我们可以得知,当BOOT0选择0,也就是拉低的时候,程序是从主闪存启动,而SWD下载是将程序下载到主闪存器,也就是说需要将BOOT0位拉低。我选择的拉低方式是画PCB的时候,直接接GND。【但我建议,第一次画板子的小伙伴,一定要将BOOT选择位通过跳线引出来,以备调试所需】
通过我绘制的电路图,可以发现BOOT选择位其实也没有问题。但是SWD还是一直下不进去…….
3, 芯片被锁的问题
这时候我就不得不怀疑,是不是我用芯片的问题,接着我换了一个STM32F103的芯片,结果还是同样的问题……
这是我想起来了正点原子一开始教的用串口下载,也就是通过FlyMcu,利用ISP下载方式,这也是芯片解锁的一种常用方式。还记得我前面提到的要把BOOT选择位引出来吗?就是为了ISP下载方式的调试,因为ISP下载是需要BOOT0接高,BOOT1接GND,并按下复位键实现下载。然而我并没有引出BOOT选择,接着就是直接在芯片的引脚上引线,然后接出来测试。附一张当时的“抢救图”,真的是惨不忍睹…….
但结果,还是不尽如人意,当接好线,准备下载的时候,检测不到芯片……….
可能全网只有我才犯这么蠢的错误
抢救自己的第一块PCB的第三天,本想放弃的时候,突然看到电源电路中的一个问题VDDA和VDD的关系。VDD是STM32F103芯片的工作电压3.3V,而VDDA是芯片模拟电路的工作电压。他们之间有个关系,在芯片手册中的描述如下。
通过STM32F1系列的官方手册可以得知 VDDA和VDD之间的电压差不能超过300mV,而我当时不知道脑子怎么想的。我给VDDA和VDD之间加入了一个10K的电阻,直接使电压差大于300mV,这也导致了程序无法下载。
错误案例:
后来,我将10K电阻拆下来,并用焊锡连接上,程序可以正常下载,测试板子其他功能一切正常。附赠修改图,电阻11直接连起来,去掉之后,一切正常。
至此,总结3个血泪教训。
1, 绘制原理图一定要细心,最好参考原子等市面上常见的原理图资料
2, 如果BOOT选择能引出来,尽量引出来。
3, 尽量不要自动布线,我这次的板子是自动布线,虽然幸运的是功能正常,但是备不住什么时候就出现问题。(因为当我没有发现电源电路问题时,我也怀疑是布线的问题)
总结:
这是一个电阻引发的3天抢救单片机的故事,以后我会分享自己的学习历程和经验,以及踩的坑,本人虽是机械专业,但方向是嵌入式,目前也会点PCB,以后分享的也是这三个方面的问题。希望喜欢的小伙伴继续支持,让我们在学习的道路上一起加油。
STM32中SWD下载不进去的解决方法的更多相关文章
- 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法
在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...
- 编程中遇到的Python错误和解决方法汇总整理
这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...
- NLTK数据包下载频繁报错——解决方法
问题描述:Nltk下载数据包,安装频繁报错. import nltk nltk.download() 运行上面的代码,下载nltk的数据包.但是在下载过程中因为各种问题导致网络传输失败,下载不成功. ...
- sql server 还原数据库后,删除用户,提示数据库主体在该数据库中拥有架构,无法删除解决方法
将另一台服务器上的数据库备份文件,在现在用的这台服务器上还原之后,再创建相同的用户名,提示用户已存在 想将之前的用户先删除掉,却提示“数据库主体在该数据库中拥有架构,无法删除解决方法” 在网上找到方法 ...
- jquery中checkbox全选失效的解决方法
这篇文章主要介绍了jquery中checkbox全选失效的解决方法,需要的朋友可以参考下 如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将 ...
- ASP.NET Web Service中使用Session 及 Session丢失解决方法 续
原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Sessio ...
- Linux中切换用户变成-bash4.1-$的解决方法【转】
转自 Linux中切换用户变成-bash4.1-$的解决方法 - xia_xia的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/xia_xia0919/articl ...
- Oracle 18c 数据库中scott用户不存在的解决方法
Oracle 18c 数据库中scott用户不存在的解决方法 注:该文为转载 上面标题可直接跳转 原文地址:http://www.cnblogs.com/zangdalei/p/5482732.htm ...
- STM32库函数void USART_SendData的缺陷和解决方法
void USART_SendData()函数在快速发送时存在问题 有丢数据的可能 转自https://blog.csdn.net/qq_27114397/article/details/506015 ...
- 记一次SpringBoot 开发中所遇到的坑和解决方法
记一次SpringBoot 开发中所遇到的坑和解决方法 mybatis返回Integer为0,自动转型出现空指针异常 当我们使用Integer去接受数据库中表的数据,如果返回的数据中为0,那么Inte ...
随机推荐
- 2022-01-27:供暖器。 冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。 在加热器的加热半径范围内的每个房屋都可以获得供暖。 现在,给出位于一条水平线上的房屋 hous
2022-01-27:供暖器. 冬季已经来临. 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖. 在加热器的加热半径范围内的每个房屋都可以获得供暖. 现在,给出位于一条水平线上的房屋 hous ...
- 2021-06-23:给定一个数组arr,代表每个人的能力值。再给定一个非负数k,如果两个人能力差值正好为k,那么可以凑在一起比赛。一局比赛只有两个人,返回最多可以同时有多少场比赛。
2021-06-23:给定一个数组arr,代表每个人的能力值.再给定一个非负数k,如果两个人能力差值正好为k,那么可以凑在一起比赛.一局比赛只有两个人,返回最多可以同时有多少场比赛. 福大大 答案20 ...
- 2021-11-10:O(1) 时间插入、删除和获取随机元素。实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象。bool insert(in
2021-11-10:O(1) 时间插入.删除和获取随机元素.实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象.bool insert(in ...
- AccessToken、for_user、get_token
在Django REST framework的SimpleJWT库中,AccessToken是一个类,用于表示一个JSON Web Token (JWT)中的访问令牌部分.访问令牌是一种常见的身份验证 ...
- ent M2M模型在pxc集群中的一个大坑
ent M2M模型在pxc集群中的一个大坑 事故简要分析 PXC集群3个节点,在插入数据时,如果使用数据库自己生成的主键,一般顺序为1,4,7,10- 这里就是坑的源头,在ent底层代码中,在做M2M ...
- Python爬取微信小程序实战(通用)
背景介绍 最近遇到一个需求,大致就是要获取某个小程序上的数据.心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据.在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑 ...
- Hackathon 代码黑客马拉松采访复盘
AIGC Hackathon 2023 北京站 我参加了选手采访提纲,这里我感觉有些点可以分享给大家.之前复盘的链接: 下面是采访我的回答内容: 1. 请向大家简单介绍一下自己吧? 子木,社区名称为程 ...
- jQuery 添加水印
jQuery 添加水印 <script src="../../../../AJs/jquery.min.js"></script> <script t ...
- Bio+IT 爱好者社区,欢迎你!
生物信息学是一个跨学科的大领域,一直以来,做生物信息分析的工程师都需要跟 IT 打交道. 现实问题是,有很多生物学.医学.遗传学背景的 Bio 人对生物领域拥有非常专业的知识经验,而对 IT 领域知之 ...
- C++面试八股文:聊一聊指针?
某日二师兄参加XXX科技公司的C++工程师开发岗位第17面: 面试官:聊一聊指针? 二师兄:好的. 面试官:你觉得指针本质上是什么? 二师兄:这要从内存地址开始说起了.如果有一块容量是1G的内存,假设 ...