1. 程式人生 > >MDK5錯誤以及解決方法

MDK5錯誤以及解決方法

之前做stm32用MDK4.7版本,一直好好的。但是最近手癢,加上MDK5可以匯入lwip以及ucos,所以就想試試。

在這兩天用的程中,磕磕絆絆的遇到不少問題,好在最終都解決了。現在基本上都能夠用起,記錄一下吧。

1:在新建工程的時候,發現沒有對應的device。

MDK5不像MDK4,在安裝的時候,device就已經整合在安裝包裡。對應的晶片裝置型號需要我們自己根據需要匯入。

怎麼匯入?

下面以stm32F0為例子

a:projec->manger->pack install

會彈出下面的介面


b:我們可以點選stm32f0serias,然後在packs中點選install安裝相應的pack(我這裡是已經安裝了,所以是update)。不過這樣太慢了,還老是不成功。

還有一個方法就是到keil官網中國找相應的pack。不過找有點麻煩,有個小竅門就是,點選(如上圖)晶片訊號對應的右邊的藍色字型。就會自動連線到keil官網上該晶片系列的網頁上,將該包下載下來。然後點選上述介面的選單欄的File->import 然後選擇下載的pack,就可以了,這個方法要快多了。

c:然後新建工程,選擇裝置的時候,就有了如下圖示。選擇相應的型號即可。


終於可以跟MDK4.7版本一樣新建工程了,然後後面基本上一樣?好吧?原諒我太幼稚了。馮唐易老,李廣難封。後面還是虐了我兩天。

後來將直接用MDK5 去開啟之前的MDk4.7寫的程式。嗯嗯,正常開啟好像是沒有啥問題。可是在translate的時候,報錯了!報錯了!我以前編譯過好幾次好好的,居然報錯了。報錯型別如下,

 error:  #5: cannot open source input file "core_cm0.h": No such file or directory

明明有,為啥就是打不開。而且在MDK5的安裝目錄下面的CMISS可以找到該檔案。好吧,應該是包含該檔案的路徑沒有被MDK5設定預設。

這樣就方法很多了,

1:找到報錯缺少的檔案,將檔案複製到我們的工程原始碼資料夾中。

2:點選魔術棒,然後在c++選項中中新增標頭檔案路徑(軟體安裝自帶的,庫檔案中的都可以)。

3:projec->manger->runtime environment顯示如下介面,然後將在CMISS中勾選core。這才是正解啊(其實在新建工程的時候就應該勾選,可是誰叫我不知道呢,現在才知道呢)。

曾經以為這樣就可以了,沒有下面還有更加頭疼的來了。

如圖,編譯器停止工作

這個看到就頭疼。又不說是哪裡出現了問問題。好吧,這個我只能找度娘和谷歌了。


根據搜到的訊息,MDK5不支援中文。

所以

1:工程的路徑中不要帶中文(我的工程裡面有中文,但是好像不影響,為了保險起見,最好以後建立工程什麼的是不要帶中文字元,免的報錯煩心)

2:安裝的路徑中不要帶中文(這個我倒是沒有)。

3:還有你的環境變數不能含有中文字元

好吧 ,環境變數不能有中文字元,辣麼。

也有兩種方法

1:在系統上新建一個英文使用者,切換到英文使用者去編譯。

2:設定環境變數。這個不用在中文使用者和英文使用者之間切換。

怎麼做?且看下文

1:計算機->高階系統設定->高階->環境變數。如圖,要修改的地方為紅色方框,TMP變數:


2:在D盤中建立Temp資料夾,點選上圖的編輯按鈕,修改環境變數。

如下圖:


設定好環境變數之儲存之後,然後重啟MDK5。編譯,通過。終於可以了。噠噠,半個小時左右寫完這篇blog。可是這些問題差不多花了我兩天。

從換版本,不斷除錯,查資料。我擦呢,解決了就是萌萌噠。最後附一張編譯成功的圖片如下(warning有點多安靜):


最後最後,歡迎多交流。一起學習一起進步。

QQ:1375403697微笑