使用STM32CubeMX,配置STM32F1時關(guān)于DEBUG的問題,后臺問的較多,就寫一下相關(guān)內(nèi)容。
1寫在前面
STM32CubeMX的好處相信大部分朋友都知道,那就是幫你快速生成初始化代碼工程。
雖然方便了開發(fā),但也給一些初學(xué)者,或者不怎么懂底層的朋友帶來了不少困擾。
特別是使用該工具生成代碼,出現(xiàn)問題的時候,如果你不懂一些底層的知識,可能你會很頭疼。
本文關(guān)于DEBUG配置的問題,針對初學(xué)者,我也把前因后果簡單說一下。
2起因
STM32CubeMX配置STM32F1系列MCU時,第一次能下載成功,但第二次,會出現(xiàn)如下錯誤:
這是什么錯誤?
沒有連接到目標,也就是你的下載器(ST-LInk)是正常的,只是沒有識別到你MCU。
3分析原因
可能很多初學(xué)者看到這個錯誤,第一反應(yīng)是不是下載區(qū)器壞了,或者接線不良等問題。
其實不然,直接原因是STM32CubeMX這個工具初始化的代碼,失能了DEBUG功能,也就是與ST-Link連接的SWCLK、SWDIO引腳不能作為DEBUG功能了。
STM32CubeMX默認配置:
調(diào)用代碼HAL_AFIO_REMAP_SWJ_DISABLE:
進一步分享,直到深入底層:
看到這里,相信大家都明白其中原因了。
但是,新的問題:為什么配置STM32其它系列(如STM32F4)不會出現(xiàn)在這個問題呢?
其實也是需要通過分析底層,答案就是STM32F1系列關(guān)于AFIO的控制器和其它系列有一定差異。
其它系列是通過一個系統(tǒng)配置控制器 (SYSCFG)來實現(xiàn)一些特殊功能,沒有關(guān)于DBUGE的SWJ-CFG幾個位(上圖)。
4出現(xiàn)不能下載,怎么解決?
如果出現(xiàn)文中說的,第一次下載之后,連接失敗,解決的辦法很多,這里列幾點常見方法。
1.STM32CubeMX配置成對應(yīng)模式
比如你下載器的S-Link,配置成SWD模式:
2.復(fù)位之后立刻連接
使用J-link帶復(fù)位引腳模式
按著復(fù)位鍵->連接 ->釋放復(fù)位鍵
3.使用串口下載
有兩種方式:
啟動內(nèi)嵌Boot,使用串口下載,請參看文章《STM32自舉程序,你了解多少?》
IAP功能,有一段Bootloader程序,通過串口更新應(yīng)用程序。
5拓展
STM32部分型號MCU不帶JATG功能,比如STM32F0、STM32G0等。
-
mcu
+關(guān)注
關(guān)注
146文章
16796瀏覽量
349325 -
DEBUG
+關(guān)注
關(guān)注
3文章
89瀏覽量
19808 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
280瀏覽量
14682
發(fā)布評論請先 登錄
相關(guān)推薦
評論