ST 链接错误 (DEV_TARGET_HELD_UNDER_RESET)

问题描述

所以我使用的是 STM32F103C8T6 板,几天前它工作正常,但这些天尝试使用 keil Vision 编译器加载代码,它显示此消息 STLINK 错误(DEV_TARGET_HELD_UNDER_RESET)。 之后使用STM32CubeProgrammer也出现同样问题,只能用“热插拔”模式连接 as you can see here

这很明显是一个重置错误,但我真的不知道它是怎么发生的,并且在互联网上找不到太多关于这个问题的资源,现在我无法在我的 stm32f103 板上下载任何代码,它显示 this message

在互联网上研究后发现它可能是焊接问题,但我不认为是这样,我只使用微控制器,没有任何面包板电路,几天前还很好。在 STM32CubeProgrammer 部分中,我的所有写和读保护复选框也未选中。

我在 stcommunity 的家伙只是说“他检查了所有 cpu 引脚,并且板子开始工作了。”但这是引脚重置的问题吗?在STM32F103C8T6板子上有一个复位按钮,但是如何在其中搜索问题?

解决方法

好的,这就是我所做的,现在它似乎起作用了(我会尽量描述性,以便您或任何陷入此问题的人可以进行比较):

  1. 我在 Ubuntu 下使用 STM32CubeProgrammer v2.6.0。连接到目标的参数是:
  • 港口:SWD
  • 频率:4000 kHz
  • 模式:正常
  • 访问端口:0
  • 重置模式:软件重置
  • 共享:已禁用
  1. 我使用 STM32f4 Discovery 作为程序员,为了实现这一点,应该断开跳线。 SB11 跳线(板下)也应该是未焊接的,但正如您将看到的,我没有在 SWD 上使用复位线。目标(STM32F103C8T6)独立供电(+3.3V)。

  2. 目标和程序员之间的联系如下:

  • Prog pin1 (VDD) --> NC
  • Prog pin2(SWD 时钟)--> PA14(Pin#37)
  • Prog pin3 (GND) --> VSS(引脚编号 23,35,47 和 9,如果是公共数字模拟地)
  • Prog pin4 (SWD I/O) --> PA13 (Pin#34)
  • Prog pin5 (NSRT) --> NC
  • Prog pin6 (SWO) --> NC

我可以通过一个按钮访问目标的 NSRT(引脚#7)(这很重要)。

这一切准备就绪后,我所做的就是按住reset按钮,然后在STM32CubeProgrammer中按下connect按钮(不释放reset),等待两秒钟,然后释放reset。在这个过程之后,目标已经连接,我可以正常编程了。 程序不会立即运行,您需要再次按下并松开重置按钮。

,

Juliane - (DEV_TARGET_HELD_UNDER_RESET) 消息意味着有什么东西让 nrst 接地。在这种模式下,除了“热插拔”之外,您无能为力。如果您有一个复位按钮,那么它可能在连接位置出现故障,这会将 NRST 拉到接地,从而使内部上拉失效。

您能检查一下复位按钮在向下和向上位置的电阻吗?我怀疑它是 0 欧姆(或至少低于内部上拉电阻)。

如果您没有复位按钮,请检查 NRST 周围的电路并尝试找出其接地的原因。

,

首先你需要清除现有的闪存 可以使用 ST Link Utility 或 STM32CubeProgrammer 来完成

按住Reset按钮,同时在STM-Prog上点击'connect',然后导航到'Erasing & Programming'并点击'Full Chip Erase'

按住复位键的同时点击 ST Link Utility 上的 Full Chip Erase

芯片清洁后,尝试将 Debug 设置为 Serial wire 这将允许多次将新代码闪存到板上,而无需在上传前清除闪存或保持复位

引脚和配置

enter image description here

或在stm32f1xx_hal_msp.c

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...