一.对于stm32仿真器下载程序事常见的问题(No Target Connected 错误和SWD/JTAG Communication Failure错误)解决方案。
(1) 出现这种问题的本质是由于stm32上的SWCLK和SWDIO没有开启。
(或是自己无意识的动了PA13和PA4一般这两个脚是决定swclk和swdio的复用的,建议在看清楚引脚的一些复用功能后再使用),
------导致仿真器无法读取到stm32的芯片,这就是报错的原因,虽然mdk能识别仿真器却无法下载程序。
如图示问题:
(2)解决方法。
通过串口下载,点亮led灯等简单的程序,来重新激活复用功能。
我使用的是flymcu进行串口烧写的,也可用其它的串口烧写工具。
如图:
【注意事项:
1)选择hex程序文件。
2)串口波特率选择76800
3)√号如图中勾选
4)开始编程等待完成,中间有擦出flash的过程,可能需要重新选择hex文件。
】
当烧写成功后再次使用仿真器烧写程序时,便不会有上述的错误了。
如图:
解释说明:
这类仿真器无法识别stm32芯片的问题,排除仿真器的物理损坏(高低电压接反,物理碰撞等)原因后,根本可以定性为仿真功能未被打开。
打开方式:需寻找一个打开仿真的程序重新下载,方能使后续程序下载进行。
stm32的启动方式分三类:
boot1 boot0
1 1 从sram中启动程序(好比内存里启动运行程序)
0 1 属于ISP方式进行程序的下载(通过串口进行的下载)
0 0 (多数单片机的默认模式)在芯片内部的Flash区域运行程序。
一般调整号后就需要下载:下载前按住复位,点击下载之后松开。
这里进行补充说明:SWD功能是有的烧写器默认的,而有的烧写器具备JTAG/SWD烧写方式,会自动切换一般这类烧写器件比较贵,基本不用担心烧写不进去的问题。如果烧写不进去按流程思路进行处理,总之烧写出现这种问题,基本就是烧写相关的引脚没使能烧写功能导致的。
这里由于最行之有效的办法就是ISP方式进行下载。
但本人测试后发现:ISP方式的缺陷在于其下载速度的缓慢,它和仿真器的相比缺点也是蛮大的,
不能仿真,下载需要找到hex文件,步骤繁琐,
不在意烧写时间的,也可直接进行该方式下载,最大的优势就是省了买仿真器的钱。
注意:当碰到明明keil软件层都识别到了烧写器的编号信息,但还是下载仍然出错,这时就检查一下所有的串口是否有被打开中,某些时候应该是电路设计问题导致的这种下载问题,只要在下载的时候将串口关闭,这种下载问题就会解决。