當前位置:首頁 » 編程軟體 » stm32編譯gbd錯誤

stm32編譯gbd錯誤

發布時間: 2023-08-15 17:24:45

1. stm32編譯時出現 error: #35: #error directive: "Please select first the target STM32F10x device used

我以前做工程的時候也出現過這樣的錯誤,我用的MDK3.5,你現在用該是用MDK4.12了吧,不管什麼版本的吧,做工程的時候得先選擇你的CPU型號,如果沒有選擇應該會出現如上的錯誤,選擇錯誤的話,會根絕你的工程彈出不同的提示,比如,ROM 不足,FLASH ERROR等錯誤。還有一種可能就是你的初始化文件,我指的是MDK里DEBUG的初始化文件選擇有問題。你先試試吧,如果不行,可以說一下你的CPU型號,和MDK版本號,以及工程的特殊性,大家也好幫你分析!

2. STM32原子的程序編譯時出現問題求解答

首先下載ST-LINK的驅動:,這是網路雲下載地址。解壓後執行dpinst_x86.exe,若不能用卸載後再執行dpinst_amd64.exe。完成後如圖所示。把ST-Link通過usb連接到電腦,然後打開設備管理器,可以看到會多出一個設備將圖中的ST-LINK連接到開發板後,再通過usb介面和電腦相連接,之後通過電源線給開發板供電。打開已經編寫好的程序,編譯一遍確保程序可用。(默認前提:MDK已經下載安裝,且添加了stm32的的支持包)根據圖中步驟,配置MDK,注意不要錯選漏選。點擊「SETTING」後出現圖中所示,按照途中信息配置(也可根據自己的需求配置)點擊「flashdownload」,勾選以框中3項,根據自己使用的stm32晶元配置第二個框中的晶元,確定回到上一界面。(默認前提:MDK已經下載安裝,且添加了stm32的的支持包)選擇「Utilities」,勾選圖中選項,完成後點擊確定。配置完成後,確保開發板開啟且正常使用,點擊「load」下載程序至開發板。完成後會有相應提示。

3. STM32編譯錯誤,初學者求指點

原因:

出現上述錯誤則是因為變數k重復定義,把你的頭文件中的變數定義前加extern(只是變數聲明不用初始化),再在某一個你要調用該變數的c文件的程序之前再定義(注意第一個調用的c文件要負責附帶初始化該變數,其他調用的c文件就不需要初始化過程啦)一下就可以了。

4. Keil 編譯STM32 遇到異常怎麼解決

這個問題一般出現在移動庫,或者將兩個程序合並的時候報錯
原因是舊版的庫與新版的庫發生沖突了,沖突的原因是舊版和新版都定義了同一個東西,比如「s32」,於是就會發生重定義的報錯
解決這個問題的方法其實也不難,因為編寫程序的時候有一個防止重定義的宏,在新版的庫裡面添加這樣的一個宏就可以消除大部分的錯誤了
我們先找到從定義的地方,雙擊錯誤跟蹤到報錯的地方我們可以看到這里就是type定義的地方,看到上面有一個「#ifndef
__STM32F10x_TYPE_H」,這個就是舊版的宏,只要將這個宏在新版的相應位置定義一下就好
到新版的庫文件中,注意要消除只讀的設置,從錯誤來看,是「s32」發生了重定義,那麼就是說,新版的庫應該也是有「s32」的定義,於是用搜索功能,找到「s32」定義的地方
然後在這個定義的上方補充定義這個宏就可以解決一部分的問題了,添加這樣一段
#ifndef
__STM32F10x_TYPE_H//補充定義舊版的宏
#define
__STM32F10x_TYPE_H
#endif
#47-D:
incompatible
redefinition
of
macro
"SCS_BASE"
的錯誤解決方法也差不多,補充定義舊版宏即可解決大部分問題,這次是在core_cm3.c文件中,注意解鎖

5. STM32編譯出錯

error: #137: expression must be a modifiable lvalue
描述:表達式必須是一個可以修改的左值
主要出現在這種現象
:a=NUM;
NUM是一個數值或表達式
,a為一個變數
但a被定義為像const這種不可更改的類型導致NUM不能賦值給變數
解決方法要麼放棄賦值要麼修改變數屬性

6. stm32編譯時出錯問題解決

對於比較小的程序,一般只有一個c文件和一個頭文件,全局變數我們通常會直接定義在c文件中,在程序之前加int i定義。如果要在頭文件中定義有以下兩種方法:用extern來聲明:extern int i;這一句只是對變數 i 進行聲明,在c文件的程序之前必須加上int i進行定義。extern int i=0;這一句聲明和定義都做了。
對於大一點的程序,有很多c文件和頭文件,這個時候全局變數就必須在頭文件中聲明(不需要初始化),然後在一個c文件中定義(該初始化的要初始化)。如果在頭文件中定義,則編譯的時候會出現重復定義的錯誤。如果只有頭文件中聲明就會出現沒有定義有警告。
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: K
MODULE: 222.obj (222)
出現上述錯誤則是因為變數k重復定義,把你的頭文件中的變數定義前加extern(只是變數聲明不用初始化),再在某一個你要調用該變數的c文件的程序之前再定義(注意第一個調用的c文件要負責附帶初始化該變數,其他調用的c文件就不需要初始化過程啦)一下就可以了。

另外: 下次最好能把程序貼出來

7. stm32編譯問題

項目中同時包含以下啟動文件,

startup_stm32f10x_hd.s startup_stm32f10x_md.s startup_stm32f10x_ld.s

應該針對不同的CPU選擇不同的啟動文件,從項目中刪除不相關的啟動文件就可以了;分別對應小容量,中容量,大容量;具體看手冊.

熱點內容
商品存儲規劃 發布:2025-02-04 17:45:24 瀏覽:564
ios訪問共享 發布:2025-02-04 17:36:33 瀏覽:333
javabuild 發布:2025-02-04 17:30:19 瀏覽:591
gnulinux編譯 發布:2025-02-04 17:30:18 瀏覽:131
蘇州阿里雲伺服器專網 發布:2025-02-04 17:21:05 瀏覽:525
如何學習php 發布:2025-02-04 17:11:55 瀏覽:389
sql查詢鎖 發布:2025-02-04 17:04:00 瀏覽:396
第二代長安cs55plus買哪個配置 發布:2025-02-04 16:58:16 瀏覽:193
彩虹島用什麼電腦配置 發布:2025-02-04 16:52:22 瀏覽:649
armphp 發布:2025-02-04 16:51:40 瀏覽:560