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