问题描述
所以我使用的是 STM32F103C8T6 板,几天前它工作正常,但这些天尝试使用 keil Vision 编译器加载代码,它显示此消息 STLINK 错误(DEV_TARGET_HELD_UNDER_RESET)。 之后使用STM32CubeProgrammer也出现同样问题,只能用“热插拔”模式连接 as you can see here
这很明显是一个重置错误,但我真的不知道它是怎么发生的,并且在互联网上找不到太多关于这个问题的资源,现在我无法在我的 stm32f103 板上下载任何代码,它显示 this message
在互联网上研究后发现它可能是焊接问题,但我不认为是这样,我只使用微控制器,没有任何面包板电路,几天前还很好。在 STM32CubeProgrammer 部分中,我的所有写和读保护复选框也未选中。
我在 stcommunity 的家伙只是说“他检查了所有 cpu 引脚,并且板子开始工作了。”但这是引脚重置的问题吗?在STM32F103C8T6板子上有一个复位按钮,但是如何在其中搜索问题?
解决方法
好的,这就是我所做的,现在它似乎起作用了(我会尽量描述性,以便您或任何陷入此问题的人可以进行比较):
- 我在 Ubuntu 下使用 STM32CubeProgrammer v2.6.0。连接到目标的参数是:
- 港口:SWD
- 频率:4000 kHz
- 模式:正常
- 访问端口:0
- 重置模式:软件重置
- 共享:已禁用
-
我使用 STM32f4 Discovery 作为程序员,为了实现这一点,应该断开跳线。 SB11 跳线(板下)也应该是未焊接的,但正如您将看到的,我没有在 SWD 上使用复位线。目标(STM32F103C8T6)独立供电(+3.3V)。
-
目标和程序员之间的联系如下:
- 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 这将允许多次将新代码闪存到板上,而无需在上传前清除闪存或保持复位
在引脚和配置
或在stm32f1xx_hal_msp.c