使用STM32CubeMX,配置STM32F1時(shí)關(guān)于DEBUG的問題,后臺問的較多,就寫一下相關(guān)內(nèi)容。
1寫在前面
STM32CubeMX的好處相信大部分朋友都知道,那就是幫你快速生成初始化代碼工程。
雖然方便了開發(fā),但也給一些初學(xué)者,或者不怎么懂底層的朋友帶來了不少困擾。
特別是使用該工具生成代碼,出現(xiàn)問題的時(shí)候,如果你不懂一些底層的知識,可能你會很頭疼。
本文關(guān)于DEBUG配置的問題,針對初學(xué)者,我也把前因后果簡單說一下。
2起因
STM32CubeMX配置STM32F1系列MCU時(shí),第一次能下載成功,但第二次,會出現(xiàn)如下錯誤:
這是什么錯誤?
沒有連接到目標(biāo),也就是你的下載器(ST-LInk)是正常的,只是沒有識別到你MCU。
這里推薦閱讀專欄文章:ST-Link資料
3分析原因
可能很多初學(xué)者看到這個(gè)錯誤,第一反應(yīng)是不是下載區(qū)器壞了,或者接線不良等問題。
其實(shí)不然,直接原因是STM32CubeMX這個(gè)工具初始化的代碼,失能了DEBUG功能,也就是與ST-Link連接的SWCLK、SWDIO引腳不能作為DEBUG功能了。
STM32CubeMX默認(rèn)配置:
調(diào)用代碼HAL_AFIO_REMAP_SWJ_DISABLE:
進(jìn)一步分享,直到深入底層:
看到這里,相信大家都明白其中原因了。
但是,新的問題:為什么配置STM32其它系列(如STM32F4)不會出現(xiàn)在這個(gè)問題呢?
其實(shí)也是需要通過分析底層,答案就是STM32F1系列關(guān)于AFIO的控制器和其它系列有一定差異。
其它系列是通過一個(gè)系統(tǒng)配置控制器 (SYSCFG)來實(shí)現(xiàn)一些特殊功能,沒有關(guān)于DBUGE的SWJ-CFG幾個(gè)位(上圖)。
4出現(xiàn)不能下載,怎么解決?
如果出現(xiàn)文中說的,第一次下載之后,連接失敗,解決的辦法很多,這里列幾點(diǎ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文章
17848瀏覽量
360652 -
DEBUG
+關(guān)注
關(guān)注
3文章
94瀏覽量
20382 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
286瀏覽量
15983
發(fā)布評論請先 登錄
STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
小馬哥STM32F1主控720空心杯四軸飛行器資料(包含源代碼和相關(guān)教程)
STM32F1能使用11.059Mhz外部晶振嗎?怎么設(shè)置系統(tǒng)頻率和PLL?
Arduino中可以使用STM32F1或者STM32F4系列芯片的內(nèi)置看門狗嗎?
Cadence Verisium Debug:統(tǒng)一調(diào)試平臺,加速SoC設(shè)計(jì)
單片機(jī)Debug工具性能對比 單片機(jī)調(diào)試常用命令
單片機(jī)Debug與仿真區(qū)別
通過stm32F1單片機(jī)的PWM功能產(chǎn)生兩個(gè)時(shí)鐘,從Dout讀取到的數(shù)據(jù)位都是0,這個(gè)是怎么回事呢?
使用STM32F1輸入捕獲功能時(shí),TIM6和TIM7無法實(shí)現(xiàn)輸入捕獲是哪里的問題?
stm32h系列和f系列區(qū)別是什么
關(guān)于STM32F1開漏輸出的誤解

開發(fā)攻略之STM32調(diào)試端口的映射

評論