解決了由於乙個很容易忽視的細節最終導致系統配置存在錯誤造成stm32 cubeide無法進行除錯的問題;在享受
cubeide
快速和便捷的服務之後,生成了乙個stm32的工程開始進行系統開發,一如既往的build
,debug
,就在開始進行除錯的時候,不幸發生了,main()
函式很簡單,幾乎一窮二白,如下所示;
瞬間一頭霧水;
難道是**器壞了?
但是,換了**器依然如故。
難道是晶元壞了?
換了板子,依然如故。
那麼又會是什麼問題呢?於是冷靜下來,開始打斷點,發現進入hal_init
函式之後,在執行完hal_mspinit
函式直接就掛掉了;函式原型如下所示;
hal_statustypedef hal_init
(void
)
於是象徵性地開啟了hal_mspinit
函式,
這個函式居然是空的,有點不可思議,你確定你不是在玩我?
/**
* @brief initialize the msp.
* @retval none
*/__weak void
hal_mspinit
(void
)
忽然思路一轉,不對,這個是弱定義,於是搜尋了一下整個工程。
關於weak,可以參考一下《c:attributeweak 的作用》搜尋了整個工程,果然不出我所料,找到了多處定義,如下所示;
最終找到了罪魁禍首,__hal_afio_remap_swj_disable();
,sw-dp和jtag-dp居然被禁用了,這就很難受了。於是直接將該函式__hal_afio_remap_swj_disable();
注釋即可。
函式原型如下所示;
/**
* initializes the global msp.
*/void
hal_mspinit
(void
)
但是回想起來,我什麼也沒做,軟體就給我禁用掉了?進入cubemx
,發現預設配置sys
是no debug模式,如下圖所示;
果然是大意失荊州,這裡使用swd需要選擇serial wire選項,最終重新生成**,發現問題解決了。
在ide帶來傻瓜式便捷的同時,也埋下了很多坑,在這個過程中遮蔽了很多細節,雖然說沒有必要做到面面俱到,但是有必要去了解,這樣可以把握每乙個細節,當初makefile都是要手動一行一行擼出來,現在點幾下就搞定了,還是妙哉。
STM32CubeIDE入坑指南
stm32cubeide使用筆記 01 基礎說明與開發流程 stm32cubeide使用筆記 02 stm32cubemx配置與 生成 stm32cubeide使用筆記 03 使用st link除錯程式 stm32cubeide使用筆記 04 雜項記錄 要點 方法 技巧等等 stm32cubeide...
STM32CubeIDE 介紹及安裝
安裝官網位址 stm32cubeide是乙個多功能的整合開發工具,整合了truestudio和stm32cubemx,它是stm32cube軟體生態系統的一部分。stm32cubeide是乙個先進的c c 開發平台,具有stm32微控制器的ip配置,生成,編譯和除錯功能。它基於eclipse cdt...
STM32CubeIDE 多通道ADC DMA轉換
1 adc1引數設定如下,本歷程開啟了9路adc通道 2 設定dma 3 設定dma資料寬度,把資料寬度有預設的half word改為word,否則兩路的adc值會合併成乙個資料 採集 如下 user code begin header starttaskchecktemp uint32 t adc...