天天看點

解決STM32Cube的SWD隻能下載下傳一次的問題

Author:果果小師弟 電子資訊專業在讀研究所學生

有一點思考,有一點想法,有一點理性!

定個小小目标,努力成為習慣!在最美的年華遇見更好的自己!

[email protected]果果小師弟,CSDN首發,果果原創

個人首頁的位址為: 👉 果果小師弟的個人小站 👈

市面常見的STM32核心闆有很多,以STM32F103c8t6核心闆為例,實物如下圖:

解決STM32Cube的SWD隻能下載下傳一次的問題

在核心闆的使用過程中,常見的問題是隻能通過SWD方式下載下傳1次程式,第2次便會報錯,提示找不到處理器。

簡單的解決辦法是:

調整BOOT0/1,使用序列槽ISP全片擦除,再恢複BOOT,重新上電即可下載下傳;

調整BOOT0/1,按Reset,使用SWD下載下傳,還原BOOT0/1;

有些闆子也可以通過持續按住reset鍵實作下載下傳。

但上述并不是我們想要的。具體是哪裡出了問題呢?

真正的解決辦法是:

在使用STM32CubeMX生成項目工程時,需要關注一項系統配置,設定好Debug模式,此時可以看到,右側的晶片GPIO預覽圖,增加了SWDIO和SWCLK的訓示。

解決STM32Cube的SWD隻能下載下傳一次的問題

此時再用keil打開新生成的工程,即可無限次下載下傳和Debug了。

設定了SYS的Debug模式為Serial Wire模式,到底産生了哪些不同呢?

實際對比,我們發現共有兩處:

  • 1 main.c檔案的static void MX_GPIO_Init(void)函數中,增加了

    __HAL_RCC_GPIOA_CLK_ENABLE();

    這裡很好了解,因為SWD下載下傳方式用的引腳是PA13和PA14
  • 2.stm32f1xx_hal_msp.c檔案的大概第77行左右,沒有打開“Serial Wire”時,該行是

    __HAL_AFIO_REMAP_SWJ_DISABLE();

    ,打開了“Serial Wire”是,該行是

    __HAL_AFIO_REMAP_SWJ_NOJTAG();

綜上所述,完全可以再不用重新配置CubeMX的情況下,通過修改上述兩處代碼,解決隻能下載下傳一次的問題。

解決STM32Cube的SWD隻能下載下傳一次的問題
解決STM32Cube的SWD隻能下載下傳一次的問題

好書不厭百回讀,熟讀自知其中意。将學習成為習慣,用知識改變命運,用部落格見證成長,用行動證明努力。

如果我的部落格對你有幫助、如果你喜歡我的部落格内容,請 “點贊” “評論” “收藏” 一鍵三連哦!

聽說 👉 點贊 👈 的人運氣不會太差,每一天都會元氣滿滿呦!^ _ ^ ❤️ ❤️ ❤️

碼字不易,大家的支援就是我堅持下去的動力。點贊後不要忘了👉 關注 👈我哦!

更多精彩内容請前往 果果小師弟的微信公衆号

如果以上内容有任何錯誤或者不準确的地方,歡迎在下面 👇 留個言。或者你有更好的想法,歡迎一起交流學習~~~

解決STM32Cube的SWD隻能下載下傳一次的問題

繼續閱讀