一、代碼及進入調試之前相關錯誤及解決
1.1 未定義錯誤(identifier "XXXX" is undefined)
出現此類錯誤主要有以下幾方面的原因及解決辦法如下:
未包含相關函數的頭文件,添加對應頭文件即可。
變量的使用在變量定義之前,在C語言中,編譯是從上到下進行的,故而無法找到變量定義,從而報錯,因此在編程之時需要注意,不要把程序調用的內容放在定義之前。
引入頭文件錯誤、未在keil工程中添加頭文件路徑,導致在編譯的時候找不到對應的頭文件。
1.2 無法下載程序,識別不到目標板
出現此類錯誤主要有以下幾方面的原因及解決辦法如下:
當下載程序失敗可從以下幾個方面進行查找,通過此電腦右鍵 -> 管理 -> 查看是否存在下載器相關的設備,如:AT_LINK,ST_LINK。若沒有則需要安裝相應調試器版本的驅動。
檢查調試器和單片機下載口的接線。
檢查單片機供電和開發板本身。
選擇正確的下載器類型,如:CMSIS_DAP
1.3 keil報錯last line of file ends without a newline
打開錯誤提示中出現的文件,將光標放置在文章最后,點擊回車即可,可以多點幾下。避免此類錯誤可以在編寫.c和.h文件時直接在文件末尾添加幾個空行。
1.4 變量重復定義
編譯時出現變量在2個或多個文件中重復定義有兩個原因,一是該變量確實重復定義了,二是頭文件重復包含。針對此類原因對代碼進行檢查即可。PS:在編程時一定注意頭文件的包含,養成良好的編程習慣!!!
1.5 keil報錯:function "xxx" was referenced but not defined
出現此類問題多是頭文件或源文件中“xxx”變量定義為靜態變量,只要去掉變量定義時的static即可。
1.6 ErrorNo space in execution regions...
出現此類問題的原因是程序大小或數據大小超出分配內存空間導致的,可重新分配內存空間或優化代碼。還有一種可能是未激活keil導致的,注冊激活keil即可。
keil破解激活可參考此篇文章:Keil5最新注冊機到2032_keil5注冊機-CSDN博客
二、調試相關
2.1 退出調試,軟件卡死
此問題主要針對5.38之后的版本,在此之前的版本不會出現此類現象。此問題是keil的軟件本身的BUG導致。只能待官方解決,但此BUG在我們的使用過程中是可以避免的。那我們該如何避免呢?只要在我們退出調試界面之前,取消所有斷點即可,但是在實際使用中發現有時候沒有斷點也會出現此類現象,那是為什么呢?因為在退出之前進行過單步調試,導致雖然沒有設置斷點,但是軟件認為存在斷點導致的,保險起見,每次退出調試之前,點擊菜單欄的殺死所有斷點選項即可。
2.2 keil里無法進行 go to 的跳轉
問題: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無法跳轉到函數和變量定義
問題:無法跳轉到定義,提示錯誤 “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”
解決:上述問題出現的原因是MDK查找路徑太長,我們縮短相關文件路徑即可。
2.5 Debug模式,某些語句不能設置斷點
解決:上述問題出現的原因是編譯優化太高導致的,我們將keil的優化等級改為default或者最低即可,這樣每一個運行的地方都可以打斷點。
2.6 Cannot access target. Shutting down debug session.
解決方法如下:勾選target選項,工程路徑不包含中文即可。
-
C語言
+關注
關注
180文章
7604瀏覽量
136811 -
keil
+關注
關注
68文章
1213瀏覽量
166875 -
代碼
+關注
關注
30文章
4788瀏覽量
68603
發布評論請先 登錄
相關推薦
評論