烧写STM32报错init mode failed解决方法


昨天使用 STM32CubeMX 生成项目配置时,在 System Core 的 SYS 选项的 Debug 模式中选错了,选成了 "No Debug".

我是用 VSCode 配合 Platformio 插件写单片机程序的,首次往STM32板子上烧录程序时没有任何问题,但是之后再想向板子上烧录时,就报错误

Error: init mode failed (unable to connect to the target)
......
OpenOCD init failed

在网上找到一篇博客解决了我的问题: https://blog.csdn.net/toopoo/article/details/79680323

我将 Debug Mode 重新选择为 Serial Wire,如下图

再拉高板子上的 Boot0 和 Boot1引脚(从板子上的 3.3V 引脚引一根线出来接一个电阻再分两根线接到 Boot0 和 Boot1),再次尝试烧录就成功了。再去掉拉高 Boot0 和 Boot1 的外接电路,此后的烧录便正常了。

我又查了一下为什么拉高两个 Boot 引脚可以恢复正常,我找到的资料显示:

  • BOOT1 = x,BOOT0 = 0 从用户闪存启动,这是正常的工作模式。
  • BOOT1 = 0,BOOT0 = 1 从系统存储器启动,这种模式启动的程序功能由厂家设置。
  • BOOT1 = 1,BOOT0 = 1 从内置SRAM启动,这种模式可以用于调试。

猜测由于我选择了 "No Debug",导致单片机的配置出错了,无法从用户闪存启动,所以调整为从内置SRAM启动,规避这个错误,从而刷新单片机的配置。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM