一、代碼及進入調(diào)試之前相關(guān)錯誤及解決
1.1 未定義錯誤(identifier "XXXX" is undefined)
出現(xiàn)此類錯誤主要有以下幾方面的原因及解決辦法如下:
未包含相關(guān)函數(shù)的頭文件,添加對應(yīng)頭文件即可。
變量的使用在變量定義之前,在C語言中,編譯是從上到下進行的,故而無法找到變量定義,從而報錯,因此在編程之時需要注意,不要把程序調(diào)用的內(nèi)容放在定義之前。
引入頭文件錯誤、未在keil工程中添加頭文件路徑,導(dǎo)致在編譯的時候找不到對應(yīng)的頭文件。
1.2 無法下載程序,識別不到目標(biāo)板
出現(xiàn)此類錯誤主要有以下幾方面的原因及解決辦法如下:
當(dāng)下載程序失敗可從以下幾個方面進行查找,通過此電腦右鍵 -> 管理 -> 查看是否存在下載器相關(guān)的設(shè)備,如:AT_LINK,ST_LINK。若沒有則需要安裝相應(yīng)調(diào)試器版本的驅(qū)動。
檢查調(diào)試器和單片機下載口的接線。
檢查單片機供電和開發(fā)板本身。
選擇正確的下載器類型,如:CMSIS_DAP
1.3 keil報錯last line of file ends without a newline
打開錯誤提示中出現(xiàn)的文件,將光標(biāo)放置在文章最后,點擊回車即可,可以多點幾下。避免此類錯誤可以在編寫.c和.h文件時直接在文件末尾添加幾個空行。
1.4 變量重復(fù)定義
編譯時出現(xiàn)變量在2個或多個文件中重復(fù)定義有兩個原因,一是該變量確實重復(fù)定義了,二是頭文件重復(fù)包含。針對此類原因?qū)Υa進行檢查即可。PS:在編程時一定注意頭文件的包含,養(yǎng)成良好的編程習(xí)慣?。?!
1.5 keil報錯:function "xxx" was referenced but not defined
出現(xiàn)此類問題多是頭文件或源文件中“xxx”變量定義為靜態(tài)變量,只要去掉變量定義時的static即可。
1.6 ErrorNo space in execution regions...
出現(xiàn)此類問題的原因是程序大小或數(shù)據(jù)大小超出分配內(nèi)存空間導(dǎo)致的,可重新分配內(nèi)存空間或優(yōu)化代碼。還有一種可能是未激活keil導(dǎo)致的,注冊激活keil即可。
keil破解激活可參考此篇文章:Keil5最新注冊機到2032_keil5注冊機-CSDN博客
二、調(diào)試相關(guān)
2.1 退出調(diào)試,軟件卡死
此問題主要針對5.38之后的版本,在此之前的版本不會出現(xiàn)此類現(xiàn)象。此問題是keil的軟件本身的BUG導(dǎo)致。只能待官方解決,但此BUG在我們的使用過程中是可以避免的。那我們該如何避免呢?只要在我們退出調(diào)試界面之前,取消所有斷點即可,但是在實際使用中發(fā)現(xiàn)有時候沒有斷點也會出現(xiàn)此類現(xiàn)象,那是為什么呢?因為在退出之前進行過單步調(diào)試,導(dǎo)致雖然沒有設(shè)置斷點,但是軟件認(rèn)為存在斷點導(dǎo)致的,保險起見,每次退出調(diào)試之前,點擊菜單欄的殺死所有斷點選項即可。
2.2 keil里無法進行 go to 的跳轉(zhuǎn)
問題:no browse information available in’工程目錄’ check-[target-options][output][browse information] then rebuild the target!
解決:選中工程目錄下的target1 -> 點擊右鍵,-> option for target ‘target1’-> 在彈出的對話框中選擇output選項卡 -> 勾選Browse information 選項 -> 重新編譯工程即可
2.3 keil無法跳轉(zhuǎn)到函數(shù)和變量定義
問題:無法跳轉(zhuǎn)到定義,提示錯誤 “no browse info for symbol in this context“
解決:把工程移到不包含中文的路徑下進行編譯使用。檢查編譯器版本和工程版本是否一致,若不一致則在keil中選擇一致的編譯器版本,重新編譯即可。若還不行記得勾選[Use Micro LIB]。
2.4 keil無法下載個別文件
問題:“xxx.s” could not be opened/could not load file“***.axf”
解決:上述問題出現(xiàn)的原因是MDK查找路徑太長,我們縮短相關(guān)文件路徑即可。
2.5 Debug模式,某些語句不能設(shè)置斷點
解決:上述問題出現(xiàn)的原因是編譯優(yōu)化太高導(dǎo)致的,我們將keil的優(yōu)化等級改為default或者最低即可,這樣每一個運行的地方都可以打斷點。
2.6 Cannot access target. Shutting down debug session.
解決方法如下:勾選target選項,工程路徑不包含中文即可。
-
C語言
+關(guān)注
關(guān)注
180文章
7628瀏覽量
139686 -
keil
+關(guān)注
關(guān)注
69文章
1217瀏覽量
168574 -
代碼
+關(guān)注
關(guān)注
30文章
4880瀏覽量
69995
發(fā)布評論請先 登錄
相關(guān)推薦
評論