2019年8月27日 星期二

STM32CubeMX產生專案碼的步驟--STM32F205RBT6在MDK5的應用範例

好久不見,大家最近過得好嗎?

這是理科太太最愛用的開場白

我覺得很實用就搬來借用一下

很長一段時間沒有更新與單晶片有關的訊息

並不是已經脫離了單晶片

而是鑽得更深入後發現了新大陸

在眾說紛紜、無所適從的超大量文件中

找到了最適合自己理解的方法

並打算一系列整理好記錄在這裡

進入主題

今天要介紹的是STM32所推出的STM32CubeMX工具(以下簡稱CubeMX)

目前官方最新版本為5.3.0

如果用過以前4.x的版本

會發現新版本的畫面變得很華麗

畫面分頁的方式讓閱讀更直觀也更簡潔

但習慣了舊畫面的使用者可能需要一點時間適應

因為版面的編排位置有不小的改變

內容上則差不多

==========================================================

開啟CubeMX

第一個看到的是歡迎畫面

正中間的深藍色方框是開啟新專案的選項

左邊則是開啟就專案的選項


右邊則是更新與設定的選項


接下來會先示範一個建立新專案的方法

這是初學者入門時最需要的部分

以往建立新專案的方法

要先到官方下載在編譯環境中適用的MCU韌體封包 (驅動程式碼、固件庫)

然後將整組設定引入編譯環境中

再自己一個一個將需要的功能

從移入的驅動程式碼中找出來設定

只要漏掉一個細節就會導致程式完全不動

而且還找不到病因,欲哭無淚

入門最怕遇到冗長難懂的文字設定流程

特別是因為理解偏差 (語文能力不好) 而產生的誤設定

CubeMX直觀的圖形操作可以省下不少麻煩

往下做你就會發現他的魅力

==========================================================


首先在歡迎畫面的正中間找到 Start My Project from MCU

點選其下方的 ACCESS TO MCU SELECTOR (紅色方框)

進入MCU選單中

在選單中輸入 STM32F205RB 這個 MCU 編號

右下方的畫面會出現與此編號相關的所有MCU選項

如果只輸入 STM32F2 則會出現整個 F2 系列的 MCU

這個選項裡會列出MCU的參考價格、對應的官方開發板、包裝、......

可以初步先確認選用的MCU是不是自己想要的

若點選需要的MCU後 (如STM32F205RB)

右上方則會出現更多與 MCU 相關的訊息


第一個出現的是MCU的基本規格描述 (Features)

和官網上的訊息一致

如果定期更新CubeMX的話

可以隨時看到第一手的MCU資訊



隔壁一欄Block Diagram則是MCU的功能方塊圖

在這個頁面可以快速檢閱 MCU的所有功能



再隔壁一欄Docs & Resources可以看到與該 MCU 相關的所有參考文件

直接點選要看的資料 (如點選RM0033)

就會連結到對應文件的網址直接下載回來


像這樣

連結到對應的文件後就開始下載

下載成功會直接開啟



==========================================================

回到原選單中雙擊 STM32F205RB 這個 MCU 編號

CubeMX會自動進入圖形化MCU設定畫面


出現的畫面是MCU完整腳位的 Pinout

在這裡要先確認一下MCU的包裝有沒有選對

同一個MCU編號可能會有不同的包裝

而不同的包裝可能存在腳位設定上的些許差異

如果發現包裝不對可以在上方的File選單中重新建立New Project

此時可以開始對 MCU的腳位及初始條件做規劃

第一件要做的是點選 System Core進入sys設定燒錄與除錯的方式


設定的方式很簡單也很直觀

就是點選sys

CubeMX就會自動跳出設定視窗


接著在 Debug 中把 Disable 改成 Serisl Wire



這樣就算設定完成了


設定好功能後會在對應的腳位上變成綠色

如果腳位是黃色代表選定的腳位功能還未開啟

要到對應的功能中把需要的設定補上

若是覺得設定視窗很佔畫面

可以把設定視窗收起來

方便檢視MCU腳位並設定

在設定視窗的右上角有兩個三角形的收放功能

點選紅色框框中的三角形就可以收起設定視窗



像這樣

已經設定好的腳位就會以綠色呈現

此時可以繼續對其他功能進行設定

==========================================================

緊接著要開始設定系統的時脈 RCC

由於我的應用是要使用外部石英晶體當成振盪源

所以要在High Speed Clock (HSC) 中選擇 Cyctal / Ceramic Resistor


選擇好之後對應的振盪腳位也會變成綠色



不過接下來要做的並不是繼續在設定視窗中點選功能

而是移到隔壁欄位 Clock Configuration 中去設定系統時脈


在這裡可以直接看到整個MCU所有跟時脈設定有關的方塊圖

要改變的設定直接在欄位中點選輸入就好

輸入的順序是由左而右,由上至下

由於剛剛已經將HSC的外部振盪腳位設定好了

所以在 Clock Configuration 中外部振盪器是以藍色反白呈現

這裡可以輸入實際應用的石英晶體時脈 (如25, 16, 12, 8......)

預設為25MHz





接下來由左到右我依序修改了一些參數來滿足板子的時脈需求

如果單純使用外部振盪器來當系統時脈

那麼設定到頂天也就25MHZ

要跑上120MHz的系統時脈

得靠內部PLLCLK將HSC倍頻上去

所以我將PLLCLK的振盪源指定為HSC

經過除頻(/25) 倍頻(x240) 除頻 (/2) 的設定後

進入系統的振盪時脈變成120MHz

然而周邊匯流排的時脈跟不上系統的時脈 (APB1:30MHz / APB2: 60MHz)

所以分配給匯流排的時脈還要經過(/4) (/2)的除頻過程

點選好就設定完成了

==========================================================

系統時脈設定好

加個周邊功能來試試

一般來說都會加GPIO或"Hello World"的測試 (UART功能)

這裡以UART3的設定作為範例


我所使用的板子

規劃了PC10與PC11當作UART3的功能腳

因此直接在MCU右上方的PC10與PC11點一下

會出現功能選單

選擇USART3_RX與USART3_TX後

MCU的腳位會變成黃色


為什麼是黃色?

前面的文章有提到是功能未啟用

所以到左邊的 Connectivity 選單中找到 USART3 點一下




接著在 Mode 中 把 Disable 改成 Asynchronous




這樣就把UART3的功能打開並對應到PC10與PC11的腳位上

另外一種方法是先在功能選單中把USART3的功能模式設定好

MCU會跳出預設對應的 IO 腳

以本專案為例

選擇USART3之後會出現PB10與PB11兩隻腳

之後再到MCU的PC10與PC11點選USART3_RX / USART3_TX

一樣可以把 IO 正確定義到需要的腳位上

==========================================================

到此為止

我們把MCU要運作的最基本設定都設好了

要開始產生程式碼的專案檔了


將畫面切換到 Project Manager 頁面上

這裡就是要產生程式碼專案前的設定

左邊可以看到三個選單

第一個選單是Project

第二個選單是Code Generator


第三個選單是Advanced Settings




在Project選單中

我們要先給專案一個名字

這裡設為Hello

專案資料夾要擺放的路徑設在桌面上 (可利用Browse鍵改變路徑)

路徑產生後會將專案名稱當作資料夾名稱放在桌面 (指定的路徑) 上

最重要的

就是不要漏掉你所使用的編譯環境設定 (設為 MDK-ARM V5)


切換到下一個 Code Generator 選單中

把紅色方框中的選項勾選

這個功能會把所有MCU的周邊功能獨立成一個成對的.c與.h檔

將來較容易修正程式且方便閱讀

建議要勾選

不然產生的周邊程式碼會全部放在主程式(main.c)中

程式看起來會很累

而 Advanced Settings 選單中會提示你現在周邊功能開啟的狀況

你可以根據需求做一下調整

這裡因為不做調整就直接跳過

做好上面所有的設定後就可以直接將右上角的 GENERATE CODE 鍵點一下


接下來會等待一小段時間

如果您所開啟的功能比較多

產生程式碼的時間也會比較久

專案建立好之後會跳出一個對話視窗

您可以點選開啟資料夾或開啟專案

若您選擇開啟資料夾

就會看到熟悉的MDK5程式碼結構


裡面多了一個以前沒見過的東西 Hello.ioc

這個檔案是CubeMX專用的IO設定檔

你剛剛所有的設定都儲存在這個檔案裡

只要點選Hello.ioc就可以將剛剛的設定呼叫出來

重點是

你可以隨時任意更改這裡的功能設定

並且重新產生新的程式碼

只要在剛剛的Code Generator中有設定Keep User Code when re-generating (預設選項)

所有自己寫好的程式碼都不會被修改

只會更動與功能設定有關的程式碼

==========================================================

CubeMX可以快速配置好一片新板子所需要的所有功能

如果你對板子的功能很熟悉

那麼使用CubeMX便能加速你開發板子的速度

因為CubeMX再好用

也要自己先了解MCU的功能及用法

CubeMX只是充當索引的角色

此外

建立好專案不代表程式已經可以動作了

要say Hello還是得靠自己key程式

下一篇文章要延續這個專案

將MDK5的程式碼結構介紹一下

敬請期待

沒有留言:

張貼留言