STlink烧录一次后就无法在进行烧录解决办法

文章描述了在使用STlink烧录STM32后无法再次连接的常见问题及解决方案。方法包括改变Boot1跳线帽位置、连接时按住复位键以及注意代码中对SWCLK相关引脚的重映射配置。特别是,误用GPIO_PinRemapConfig可能导致STlink无法识别芯片,需要正确设置以允许SWD通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用STlink烧录后,在进行烧录一次后就无法进行连接,并且STM32 ST-LINK Utility出现这种情况,有以下几种解决办法:

 1,断电将单片机上的boot1上的跳线帽接到1,此时就可以正常烧录,但是此时的单片机是无法运行程序的,需要将boot1跳线帽继续接到0段才可以,这种方法很麻烦!

2,使用STM32 ST-LINK Utility连接时按住复位键,再进行连接,几秒钟后再松开,此时就可以正常连接,擦除芯片内容后在就可以正常烧录了!(擦除芯片内容:连接上之后点击页面上哪个橡皮擦的标志就可以了)

 3,在代码中又涉及到对 SWCLK 烧录方式的引脚操作时,即在程序中用到了PA13,PA14,PA15这几个引脚,将其用作普通IO时需要进行重映射,此时只能用

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//失能JTAG,但使能SW

而不能使用 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE),这段代码会使SW和JTAG均失能,在烧录程序后STlink烧录需要用到的引脚被设置为普通引脚,所以连接时肯定连接不上的!

        我在烧录程序时就是将A15引脚用作了普通IO,使得每次烧录完成后就无法再次连接,必须擦除芯片才行,因为这个困扰了很久,之后发现了是这个这个原因,记录下来,希望后来的兄弟能看到,有所帮助!

### 关于STLink烧录完成后自动复位的操作 当使用STLink工具进行STM32微控制器的程序烧录时,通常会在烧录完成后触发一次芯片复位操作。这种行为可以通过特定配置来控制是否执行复位动作。 #### 自动复位的原因分析 在某些情况下,STLink会默认启用校验功能,在烧录结束后验证写入数据的准确性[^2]。如果启用了此选项,则可能会导致目标设备因校验过程而发生复位现象。然而,这并非唯一原因;部分开发环境或软件也可能强制设定为每次编程后重启硬件以便立即运行新固件。 #### 如何调整STLink设置以管理复位行为? 对于希望修改这一特性的用户来说,可以采取如下方法之一: 1. **利用STM32CubeProgrammer GUI界面更改参数** 打开`STM32CubeProgrammer`应用程序并连接至您的目标板卡。导航到“Options Bytes”或者类似的高级选项区域寻找有关下载后的处理指令字段。在此处应该能够找到类似于“Reset After Download”的开关项将其关闭即可阻止自动重置的发生[^1]。 2. **命令行模式下的自定义脚本编写** 如果倾向于自动化流程或是批量作业场景下更偏好CLI方式的话,那么可通过构建专属批处理文件实现同样效果。下面给出了一段Python伪代码展示如何调用相应API接口取消后续启动信号发送: ```python import subprocess def disable_reset_after_program(): command = ["STM32_Programmer_CLI", "-c", "SWD", "--resetmode", "none"] result = subprocess.run(command, stdout=subprocess.PIPE) output = result.stdout.decode('utf-8') return output ``` 上述函数中的`--resetmode none`即代表不实施任何形式的系统唤醒机制。 请注意以上两种途径均需确保所使用的版本支持这些特性,并且具体路径名称可能依据实际安装情况有所差异。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值