STM32 Cube之旅-嘗試新的開發方式

嘗試使用Cube進行一些開發學習,這裏對此做一個梗概,先有一個全面的瞭解。

Cube全家桶

曾幾何時,ST剛推出CubeMX的時候,自動生成的外設初始化代碼都會有這樣那樣的錯誤,而如今,隨着軟件的迭代升級,Cube生態也越來越完善,並且使用也越來越方便,ST推出的STM32Cube Ecosystem提供了免費整套的開發軟件工具和嵌入式軟件包,其中可以從芯片的外設配置,程序開發,程序下載以及系統監視一系列的功能。如下圖所示;

在這裏插入圖片描述

  • STM32 CubeMX 幾乎STM32的設備都可以使用這個工具初始化配置代碼,這個是基於Java開發的圖形化界面配置軟件,可以爲Cortex-M自動生成需要配置的C代碼,還可以爲支持Linux系統的Cortex-A內核生成設備樹。
  • STM32 CubeIDE 這是一款ST推出的免費的集成開發環境,基於Eclipse和GNU C/C++ 等開源工具鏈,可以編譯調試代碼,並且官方也將STM32 CubeMX集成到IDE中,這樣整個軟件的配置和開發變得渾然一體,便捷非常。
  • STM32CubeProgrammer 軟件編程工具,支持(JTAG,SWD,UART,USB DFU,I2C,SPI,CAN)等方式對設備和外部存儲器進行讀寫。
  • STM32CubeMonitor 系列工具。強大的監視工具可幫助開發人員實時微調其應用程序的行爲和性能,這個目前還沒有嘗試,暫且先相信官方的自誇吧。

所以使用以上的ST Cube全家桶進行STM32的軟件開發,還是有不少坑要在實踐過程中慢慢爬,整體的一個流程基本如下;
在這裏插入圖片描述

  • 第一步:使用 CubeMX初始化相應的芯片外設功能等等;
  • 第二步:使用CubeIDE進行代碼編輯調試等操作,當然,如果你喜歡也可以使用IARKeil,或者VSCode,這個完全出自個人喜好和習慣,但是據說CubeIDE裏集成了CubeMX,這個難道不香嗎? 加上如果想使用 gcc編譯器,那也省去了很多配置的麻煩;
  • 第三步:使用CubeProgrammer進行程序燒錄,主要是支持的協議多啊,還可以吧,感覺是吹的挺厲害的;
  • 第四步:以後可能會出更多的功能插件,目前感覺不是十分必要。

CubeMX

STM32 CubeMX的安裝,十分簡單,不過下載需要提交郵箱,基本根據系統提示就可以完成,另外,STM32 CubeMX目前自動生成的代碼支持官方的HAL庫LL庫,像以前筆者常用的標準外設庫就已經被ST拋棄了,最新的STM32F7已經不支持標準外設庫了。
同時,CubeMX初始化生成C代碼項目,最終的工程可以符合IARKeil MDKGCC,所以這裏相對來說比較方便,不用對着手冊擼寄存器了,也不用對着官方標準外設庫demo進行移植,真的是哪裏不會點哪裏。

  • HAL庫的封裝相對來說好一點,但是代碼讀起來相對比較冗雜,通用性和移植性好,符合軟件工程的設計思想,那麼會犧牲一點效率了。
  • LL庫會再底層一點,這幾個的選擇還是看個人喜好和團隊的需要了。

CubeIDE

再官網下載CubeIDE這個軟件並安裝,假設你已經成功安裝並打開了軟件,會看到;
在這裏插入圖片描述
這時候CubeIDE已經集成了CubeMX了,新建STM32工程,step by step即可快速開始了。

CubeProg

整體看了一下 STM32 CubeProg 的介紹,其實有點還是可以的,首先這個軟件支持多平臺如:Windows, Linux, macOS等等,Java 進行開發的有點,這一系列差不多都是用Java開發的吧,另外可能對st-link的支持比較好,如果使用jlink的話,用個openocd也無妨,但是畢竟是套裝,下面簡單羅列一下;

  • 支持擦除,讀寫Flash等等操作;
  • 支持Motorola S19, HEX, ELF 和 二進制格式;
  • ST-LINK的固件升級;
  • 多平臺:Windows, Linux, macOS,其實就看好這一點;

結語

對於Cube進行了簡單的學習和介紹,目前還有不少坑要爬,建議看一下HAL的封裝,有必要LL也可以看看,基本上還是符合CMSIS那套標準。另外關於開發環境,如果需要使用CubeIDE進行開發,它已經集成了CubeMAX,則無需另外下載了,直接一站式服務搞定,如果只需要生成初始化代碼,那麼CubeMAX還是有必要單獨裝一下的。

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