燒寫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