最近在學習STM32,但是調試和下載程序過程中,成功了N次,但是就突然出現找不到ST-LINK的問題。
上網查了許多資料,都沒用,耗費了1個小時的時間,終於找到了解決辦法,我就覺得為什么不早點推給我這篇文章。感謝這位大佬,在此搬運您的文章僅做學習與記錄使用,末尾已附上連接,如有侵權,會立即刪除。
情況描述:ST-LINK能被電腦識別,驅動是好的。但是在keil中的Debug-setting中的SW Device找不到。無論是下載還是調試,都提示“flash download failed target dll has been cancelled”。(注:如果一按setting ST-LINK的指示燈就滅了,請重新升級一下ST-LINK的固件,可以在keil 5安裝文件夾下的ST-LINK子文件夾下的ST-LinkUpgrade.exe自動升級)
顯示“NO target connected“ 但是驅動沒有問題 在設備管理器中顯示出有stlink
原因是配置了GPIOA的 14 13這兩個口了
GPIOA_MODER復位后的值為:0x2800 0000,即將GPIO13\14配置為復用模式,但為什么在程序配置了GPIO13\14為輸出,並且在目標芯片有復位的情況下也會引起SWD無法仿真、下載的問題。
”
解決辦法:
1、先確認目標板上電。
2、先長按住目標板上的復位鍵,再點擊 Settings,再松開目標板上的復位鍵。
3、此時KEIL打開Settings的設置對話框,請確認有SWD的內容后,再進行下一步。
4、將目標板斷電,重新上電。
5、先長按目標板的復位鍵,再點擊仿真或者下載按鈕,再松開復位鍵。
注:這里點仿真到松開復位鍵不是每一次都能成功,每次點了仿真鍵到松開復位鍵的時間每次都不同,在某一個點時,就可以進入仿真或者下載程序了。板子就恢復正常了。但需要注意的是,在程序里一定要避開對GPIO13\GPIO14的配置。
但是還有一個問題,我按照上述方法成功以后,第二次下載程序我還是沒識別到ST-LINK,那我豈不是每燒一次就要把上面步驟重復一遍?
我想了想,看了一下程序,學習的是待機喚醒程序,我就想是不是程序的事啊,我就換了個跑馬燈的程序按照上面步驟燒進去,發現能識別到ST-LINK了。
可能原因還是GPIOA 13 14被配置了。俺也沒找出具體的原因。
轉載至CSDN博主「qq_42041980」的原創文章
原文鏈接:https://blog.csdn.net/qq_42041980/article/details/92015997