昨天使用 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啟動,規避這個錯誤,從而刷新單片機的配置。