0

所以我使用的是 STM32F103C8T6 板,几天前它工作正常,但这些天试图用 keil vision 编译器加载代码,它显示这条消息 STLINK Error(DEV_TARGET_HELD_UNDER_RESET)。之后使用 STM32CubeProgrammer 也出现同样的问题,只连接“热插拔”模式 ,如您在此处看到的

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

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

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

4

3 回答 3

2

好的,这就是我所做的,现在它似乎正在工作(我会尽量做到描述性,所以你或任何陷入其中的人都可以比较):

  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 Clock) --> PA14 (Pin#37)
  • Prog pin3 (GND) --> VSS (Pins# 23,35,47 and 9 if common digital analog ground)
  • Prog pin4 (SWD I/O) --> PA13 (Pin#34)
  • Prog pin5 (NSRT) --> NC
  • Prog pin6 (SWO) --> NC

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

一旦这一切准备就绪,我所做的就是按住复位按钮,然后按下 STM32CubeProgrammer 中的连接按钮(不释放复位),等待两秒钟,然后释放复位。在此过程之后,目标已连接,我能够正常对其进行编程。程序不会立即运行,您需要再次按下并释放重置按钮。

于 2021-01-06T07:50:13.923 回答
0

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

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

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

于 2021-02-23T22:26:21.097 回答
0

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

在 STM-Prog 上单击“连接”的同时按住复位按钮,然后导航到“擦除和编程”并单击“全芯片擦除”

或者

在按住复位的同时单击ST Link Utility 上的Full Chip Erase

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

引脚和配置

在此处输入图像描述

或在stm32f1xx_hal_msp.c

在此处输入图像描述

于 2021-07-15T03:30:45.723 回答