爲什麼SWD燒錄STM32時BOOT0腳要接高電平,否則SWD下載失敗

之前網上買了個STM32的最小系統開發板,由於最近換了筆記本,爲了測試重新搭建的開發環境是否能用,用st-link v2燒寫這塊開發板,發現居然提示

Reason: (4) No device found on target.

把板子側的管腳定義,st-link側的管腳定義,連接杜邦線的連通性都測了,居然還是不行,見鬼了。。。

上網查了下,有人說到買的一個開發板有類似的情況,客服讓他把BOOT0短接3.3V,再燒寫就可以工作了。嗯?BOOT0短接3.3V不是用於串口下載麼,SWD按理說可以無視BOOT0配置,這是什麼思路。測試了以下,居然還真的好用了,而且之後再用SWD燒錄,無需再短接3.3V和BOOT0。

好奇心被成功勾起,再次網上搜索,直到發現有人說了這樣一段話(特意把作者論壇id截圖了,以示敬意)
OK,這個應該就是正解了。板子裏燒的是出廠程序,我買了後沒有新燒錄(懶。。。買了有一年多。。。一直沒用。。。)。原來的程序不知道是什麼樣的,但是猜測應該是把SWD調試接口禁用了,這樣SWD的引腳就可以用作普通GPIO使用,這樣下載完第一次程序後,如果從flash啓動(BOOT0==0)則無法繼續使用SWD接口重新下載程序或者調試,BOOT0拉高,可以讓STM32從RAM啓動,這樣就可以重新使用SWD下載程序。後面由於我下載的程序裏使能了SWD接口,所以不用BOOT0拉高也可以燒寫。

OK,用CubeIDE測試一下猜測,禁掉SWD接口,燒錄,再次燒錄,復現了之前的問題,猜測正確。

更坑的一點是,現在CubeMX默認是把SWD調試關閉的(No Debug),這就導致如果沒注意這一點,燒進程序後,BOOT0拉低(STM32推薦的正常工作狀態),SWD再次燒寫就會失敗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章