1. 程式人生 > >讓菜鳥秒變stm32高手的STM32CubeMX

讓菜鳥秒變stm32高手的STM32CubeMX

         菜鳥到高手,顯得有些霸氣哈,不過的確如此,官方帶給我們一個比較實用的stm32的工具。這個工具就是STM32CubeMX,昨天玩freeRTOS的時候就提到過。說到freeRTOS,這裡就多說兩句。全域性變數,在任務間相互訪問的時候也是需要臨界保護的,不然可能會出現奇怪的問題。不過我們可以關掉時間片排程,任務間可以訪問全域性變數而不用加保護(不等於菜鳥可以隨意程式碼)。關閉了時間片排程,只有發生vTaskDelay的時候才會上下文切換。只要程式碼合理訪問全域性變數可以不加保護的。因此程式碼也不是可以任意書寫的,關於freeRTOS的問題,多看看原始碼,一切都會有答案。原始碼較少,這裡就不過多介紹。關閉時間片不是網上說的configUSE_TIME_SLICING這個巨集定義,老鳥發現這個巨集壓根沒用哈,嘿嘿。閱讀原始碼可以找到相關巨集配置。不過不建議關閉,時間片排程也可以讓一個任務在執行一定時間後切換到其他就緒任務去執行。如果有freeRTOS相關問題,可以留言給我。廢話說多了點哈,繼續我們的STM32CubeMX。下面我們來講講這個工具的作用,講完後,可以自己下載一個試試,挺簡單不多介紹。

     到官網下載STM32CubeMX,並安裝。

     1:晶片選型

       開啟STM32CubeMX,我們點選new project,我們就可以進行晶片選型,如果你下載了打開了這個工具,是不是很驚訝,stm32的所有產品型號都在裡面,而且左下提供了資源勾選,比如你要乙太網支援,勾選乙太網選項,所有的支援乙太網的stm32晶片才會被顯示,旁邊還有個max的欄目指示了晶片最多支援該功能的個數。空白的一般預設只有一個。下圖是我勾選乙太網的截圖。

     

上圖不僅提供了晶片,還提供了價格,是否在售,封裝,儲存,頻率等一些列資訊。

除了cpu資源可以選型外,上面還提供了腳多少,儲存大小等非常靈活的選型方式。

我們選擇其中一個的微控制器後。右上部分給我們提供了完美的支援。

第一個選項提供了改cpu

的特性,我們可以大概的瞭解選中的cpu資源。

第二個選項提供該cpu框圖,截圖圖片太大,這裡就不截圖了。

第三個選項提供了cpu文件,這個文件非常多也非常全面,基本不用在網上東找西找了,主要給硬體工程師用。

第四個選項提供了cpu的相關設計資源,軟體程式設計文件,給軟體工程師用,非常全面,包括網上很少用到的文件資料,比如系統移植相關的底層資料(堆疊,指令,彙編)。

第五個選項提供了晶片購買途徑,這個每個人自己選擇吧。

第六個選項開始工程,晶片選好了,就可以開始工程。

2:設定晶片。

晶片選好後,可以開始設定晶片。這就是軟體工程師的好幫手呀。比如我要乙太網功能,勾選上乙太網即可,他就會自動分配出晶片對應的乙太網介面。如下圖:

上面我選了標準的MII介面。很多人可能就不理解,你勾了個乙太網,咋報錯了。老鳥告訴你為啥變紅了,stm32有個複雜的功能就是io口複用,勾選mii後分配的io口和spi2以及iis口重合了,所以這個工具非常智慧的提示了出來,非常神奇吧。告訴你他們不能使用了。還有些變黃了,說明他們可以選擇性使用,真是太方便了,省去了查資料慢慢找io的痛苦。比如我們還要給它個外部時鐘。我們勾選時鐘即可,響應的時鐘腳就會分配出來。
如果要將某個腳設定成輸入輸出那就更簡單了,滑鼠點選對應的io口選擇對應功能即可,比如我單擊PA6,它的所有功能可以輕鬆選擇:


軟體使用比較簡單,不過多解釋,一看就明白,設定完晶片功能後,我們就設定系統各項功能時鐘。

選擇時鐘設定頁面(clock configuration)時鐘輕鬆設定,如下圖,簡單明瞭,不過多解釋了:


時鐘配置完成後,可以切換到configuration選項對功能進一步設定,裡面引數都是常用的功能,設定較為簡單。就不多舉例了,比如網路功能裡面設定mac地址等。

       3:生產初始化程式碼

        經過上面的圖形化設定,我們可以直接生產初始化程式碼。省去我們查閱資料慢慢配置的的環節,時間更多的利用在應用層設計。點選project下面的生成程式碼選項。輸入工程名(根據你專案需要起名),這裡我就隨便輸入一個名字。設定好相關引數。點選ok即可。順便說下,這個工具是配帶教程的,我這裡只是告訴大家有這樣個工具可以加速開發,具體設定參考官方教程。

生成後開啟資料夾內容如下:


上圖的inc 和src資料夾裡面是生成的主要程式碼,其他幾個資料夾裡面的東西,大家可以根據自己需要選擇。src資料夾檔案如下:


開啟熟悉的main.c,可以看到如下內容:


初始化已經完成,直接寫自己的功能即可了,然後就是加入到工程裡面編輯,是不是非常簡單。熟悉的話10來分鐘一個工程構架就出來了。這樣一來,stm32就變成最簡單的微控制器了,有木有,這個是基於庫函式的,io操作直接可以檢視庫函式手冊完成。這個工具主要是加速底層開發。輕鬆弄出自己的應用程式。對於新入手stm32來說,用這個庫函式,讓開發變得簡單。減少定時器,can,ad,line等外圍配置花去的時間,影象化配置,秒變高手。最主要的是功能直觀可見,編輯性好,可匯入工程編輯。修改配置也簡單