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