STM32CubeIDE導入機智雲生成基於MDK的STM32工程

最近在嘗試基於機智雲的STM32設備接入物聯網雲平臺,使用的開發板是淘寶上購買的STM32最小系統評估版(基於STM32F103C8T6)。機智雲可以根據設備、數據點的設置自動生成一個STM32工程簡化開發,這個方式很棒,可以節省很多時間,然而,糟糕的是,ST更新其官方開發IDE爲STM32CubeIDE。

STM32CubeIDE是把Attolic的TrueStudio(基於Eclipse)和ST的芯片配置軟件CubeMX打包在一起提供的免費開發IDE,之前是分別獨立提供,還需要用戶自己將二者集成。STM32CubeIDE是2019年新推出的,而機智雲生成的示例代碼是基於CubeMX和ARM MDK開發環境,其中CubeMX的代碼庫基於F103_Firmware_v1.6(CubeIDE是v1.8)。

IDE的不同引入了一些問題,具體如下:

  1. 生成代碼的CubeMX文件(.ioc文件)無法在CubeIDE中直接打開,報錯信息如下

Invalid Input: Must be project’s active .ioc file.
Project’s ‘MCU_STM32F103C8x_source’ active one is ‘MCU_STM32F103C8x_source.ioc’ file

這是因爲ioc文件名(STM32F103C8x.ioc)與工程文件名(MCU_STM32F103C8x_source)不一致,修改兩者中其一保持一致後此問題消失。

  1. 然後後新的問題出現了,CubeMX器件視圖裏一篇空白,正常應該顯示芯片管腳圖,如下所示
正常畫面 問題畫面
**正常畫面**

進一步查看報錯信息,如下所示
在這裏插入圖片描述具體錯誤信息如下

Unable to create part
Invalid Input: Must be project’s active .ioc file.
com.st.stm32cube.ide.mcu.ide/META-INF/version/build_ref file not found, build reference will not be reported into properties

經過嘗試,此問題是由於CubeIDE使用了高版本的CubeMX,而機智雲生成的工程基於老版本的CubeMX文件,所以無法打開。解決方法如下

  1. 在ST官網上下載最新版本的CubeMX軟件(單獨的CubeMX)
  2. 用CubeMX單獨打開.ioc文件,此時可以看到器件能夠正常顯示
  3. 無需更改任何芯片配置,直接在CubeMX中選擇Save保存.ioc文件
  4. 此時用CubeIDE就可以打開.ioc文件

我猜測,CubeIDE由於剛剛推出,集成的CubeMX和獨立安裝的CubeMX還是有所差別,導致對老版本的ioc文件兼容性並不好,後續應該會隨着軟件升級解決,當前只能通過以上的方式修復ioc文件(其實是將其升級到最新版本的格式)後再用CubeIDE集成的CubeMX打開。

  1. MDK工程的文件組織結構與TrueStudio的不同,編譯時出現大量錯誤
    此問題我還沒有找到很好的解決辦法,只能採用最笨的方式,新建一個CubeIDE工程,手動移植過去。後續如果有更好的辦法,我會更新在文章的後面。

至此,整個的工程移植就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章