我目前正在使用 ST-Link 调试器对我的 STM32F3 探索板进行编程。我使用的 IDE 是 Atollic TrueStudio 5.5.2。现在我面临一个非常奇怪的问题,那就是我不断收到消息
初始化 ST-Link 设备时出错。原因:(-1) 无法连接到设备。请检查目标的电源和电缆。
每当我想将程序下载到我的 STM32 中时。我尝试了一些从互联网上找到的解决方案,但问题仍然存在。有没有人遇到过这个问题?任何建议都会有所帮助。

这是我找到的解决方案,但我不适合我。 http://www.kerrywong.com/2012/08/02/the-dreaded-cannot-connect-to-st-link-error-message/
几年来,我一直在使用 mbed 在线编译器来创建 .bin 文件,然后像这样在命令行中使用 ST-LINK/V2 USB 加密狗刷写它们,一切都完美无缺:
st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000
Run Code Online (Sandbox Code Playgroud)
今天我下载了 STM32CubeIDE for Linux (Fedora 30) 并开始学习本教程,使用 maple mini (STM32F103CBT6)。
构建项目并开始调试运行后,我得到输出:
STMicroelectronics ST-LINK GDB server. Version 5.3.2
Copyright (c) 2019, STMicroelectronics. All rights reserved.
Starting server with the following options:
Persistent Mode : Disabled
Logging Level : 1
Listen Port Number : 61234
Status Refresh Delay : 15s
Verbose Mode : Disabled
SWD Debug : Enabled
Waiting for debugger connection...
Debugger connected
-------------------------------------------------------------------
STM32CubeProgrammer v2.2.0
-------------------------------------------------------------------
Log …Run Code Online (Sandbox Code Playgroud) 我正在尝试将OpenOCD用于不常见的事情。除了连接芯片,我只想检测芯片。
我想到的过程将如下所示:
使用参数作为探针的配置文件(例如
stlink.cfg)启动OpenOCD-f。因此,OpenOCD知道要使用哪种探针,但不知道它将找到哪种芯片。OpenOCD检测到芯片并以某种方式报告该错误(例如,向stdout写一些东西)。如果可能的话,此操作不应对芯片造成干扰(例如将其重置)。
OpenOCD关闭。
以下是有关该过程的更多说明:
注意1:如果OpenOCD没有达到服务器状态(我需要设置Telnet或GDB客户端才能与其进行交互),那将是很好的。我很乐意以更方便的方式获得芯片检测报告,例如在stdout通道上获取芯片信息。
注2:检测不应对芯片造成干扰。但是,如果OpenOCD找不到任何东西,我希望有一种备份方法,其中OpenOCD尝试更积极地查找芯片(例如按住nRST销)。如果需要,我可以自己调用其他方法(因此,无需OpenOCD自动执行此操作)。
注意3:首先,我将仅在具有STLinkV2或STLinkV3探针的STM32芯片上应用此“芯片检测”功能,然后再将其应用于其他探针和芯片。
注4:某些板仅具有SWD连接(无JTAG)。
注意5:我正在Windows 10计算机上工作,并从https://www.playembedded.org/blog/download/下载了最新的OpenOCD版本(版本0.10.0_dev00921,于2019年7月6日构建)。
Tommy Murphy先生向我介绍了OpenOCD参考手册中的10.7节(请参阅http://openocd.org/doc/pdf/openocd.pdf)。我已经阅读了本节,并观察了以下示例:
# openocd.cfg file
# -----------------
source [find interface/olimex-arm-usb-tiny-h.cfg]
reset_config trst_and_srst
jtag_rclk 8
Run Code Online (Sandbox Code Playgroud)
因为我的芯片通过STLink探针连接并且使用SWD传输协议(而不是JTAG),所以我对该示例进行了一些修改:
# openocd.cfg file
# -----------------
source [find interface/stlink.cfg]
transport select hla_swd
reset_config srst_only
adapter_khz 480
Run Code Online (Sandbox Code Playgroud)
我将NUCLEO_F303K8板连接到PC进行此测试。然后,在控制台中发出以下命令:
> openocd -s "C:\...\scripts" …