问题描述
我遇到了 stm32f103c8 的意外问题。我正在对芯片进行编程,重置后,它开始运行程序,但几秒钟后,微控制器变得混乱并停止运行程序。之后,当我尝试重新编程微控制器时,IDE(IAR EWARM)会告诉“目标保持在复位状态”。
这是一个非常不寻常的问题,因为有时当我将 nRST 引脚直接连接到 VCC(3.3V)时,微控制器运行程序但不幸的是电流超过 120mA 并且芯片最终损坏。
我使用 STM32CubeMX 生成代码,我的程序员是 STLINK V2(clone),也尝试了 Jlink V8.0(clone) 但没有改变结果。
难道是因为克隆程序员?
谁能帮我解决这个问题?
谢谢
解决方法
切勿将 nRST 直接连接到 VDD/VCC。这是一个双向输入输出,只能连接到开漏/开集电极信号。它可以从外部或从内部被拉低,除了内部上拉电阻外,绝不能被拉高或驱动为高。
当您的调试器或程序员完成对闪存的编程并想要开始运行新程序时,它需要能够将这条线拉低,如果您将这条线连接到硬件中,它可能会在外部做到这一点,否则它必须能够使用内部复位脉冲发生器通过软件将其拉低。如果它这样做并且您在外部将线路连接到高电平,那么您实际上是在使电源短路,这就是您观察到的过流情况的原因。
也许最初的问题是你的假冒 ST-Link 的复位输出配置为推挽,而它应该是开漏的。
我建议最简单的方法是不连接 nRST 线并将您的编程工具配置为仅使用软件复位。