最近在學習使用STM32Cube這種比較新的方法來寫STM32程式,但是在剛開始學的時候就遇到了一個讓自己很頭疼的問題,在使用JLink下載下傳程式時,程式能夠燒寫進闆子,但是卻出現一個莫名其妙的警告。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLwEEVNNTUq1UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxMDN4ITM1ATMyEzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
并且在使用線上調試功能時,點選全速運作,出現一堆錯誤。
在網上找了許多的解決方案,也有很多遇到類似問題的,但是試了以後都沒有解決,最後自己一步一步的找原因,最後發現在STM32Cube生成的工程中的stm32f1xx_hal_msp.c檔案中的第78行有這樣一行代碼。
/**DISABLE: JTAG-DP Disabled and SW-DP Disabled
*/
__HAL_AFIO_REMAP_SWJ_DISABLE();
這行代碼将SW-DP關閉了,是以我們在仿真的時候程式運作到這裡因為SW-DP被關閉,仿真功能就不能使用了,程式就會執行不下去,是以就報了上面那樣的一堆錯誤。在把這行代碼注釋掉以後問題得到解決。
上面的解決方法是我一步步運作找出來的,歸根結底的原因是在用Cube設計時,要将和SW-DP相關的引腳定義成仿真引腳,這樣Cube生成的代碼就會自動将上面的那行代碼改掉。
然後在Pinout裡将SYS裡面的Debug設定成Serial Wire,這樣問題得到解決