Arduino STM32 Nucleo-64 開發環境設定

最近發了一篇Linux Mosquitto MQTT Clients 與 公用Broker 驗証的文章,裡面用到的環境平台便是 Arduino STM32 Nucleo-64。Arudino 聽聞很久了,終於有機會用到他,用起來還真的蠻方便的。倒也不是說有多簡單,而是它的週邊驅動庫很多,簡單的設定的指定幾個腳位,就可以使用指定週邊。

趁著這個機會,就把學習到的知識,記錄下來吧。

STM32 Nucleo-64 F303RE

STM32 Nucleo-64

這次用的這塊開發版是 Nucleo-64 F303RE,官方網站有比較詳細的說明可以參考看看。它擁有相容於 Aruduino Uno V3的接腳, 64K SRAM, 512KB Flash 與 ARM Cortex M4 處理器。

Nucleo 系列強調的是易於開發,開發板是有兩張板子連接在一起的。一個是主板、一個是燒錄板。另外 也支援 ARM 的 Mbed 線上開發環境,可以直接利用網頁IDE開發程式,直接編譯下載 image到Nucleo USB的 Mass storage,就會自動更新。這一個開發流程,省去了環境架設的整個流程,對於快速入門相當方便。不過本文所用到的 Arduino 並不適合這種方式,所以還是一步一步的把需要的程式裝一裝吧~~

STM32 Arduino – STM32duino

STM32 based 的 Arduino 支援套件,是一個稱為 STM32duino 的專案。在建置 Arduino 的開發環境時,我們會先取得 Arduino 的標準開發 IDE,再下載 STM32 的 board support package (STM32duino),這樣便能編譯程式。最後再安裝 ST-Link 燒錄器驅動/工具,便能將編譯後的程式燒入板子。

 

安裝流程

接下來我們就分三步份來講述安裝的流程。安裝 ST-Link 燒錄驅動、安裝 Arduino IDE、安裝 STM32duino 與編譯上傳範例程式。

安裝 ST-Link 燒錄驅動程式

上方為 ST-Link 燒錄器

Nucleo 是由一塊 ST-Link 燒錄器與STM32組合起來,這樣就可以透過一個 mini USB 接頭同時完成供電、燒錄以及 UART 除錯,真的是相當方便。ST-Link 驅動程式可以在官網註冊一個帳號,就可以下載。另外 ST-Link 主程式亦可在官方網站下載到,基本上ST-Link主程式在開發過程中並沒有直接使用到,也有可能是 STM32duino 會直接呼叫到,由於不太清楚原理,就都裝上。

安裝 Arduino IDE

Arduino IDE 在官方網頁就可以下載 (這廢話好像說了好幾遍…),在發文當下的最新版本是 1.8.7,下載完畢直接下一步到底,把能打勾的都勾,完成安裝。中間會問幾個 Driver 要不要安裝,也是選擇信任再安裝。

信任並安裝驅動程式

安裝 STM32duino

完成安裝後,會在桌面上看到一個 Arduino 的圖示,雙擊啟動,以進行線上的 STM32duino 安裝。

Arduino 啟動畫面

接下來要將STM32duino 的開發板網址加進入管理頁面。開啟《檔案》–> 《偏好設定》,將下列網址貼上

https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json

打開 《工具》–>《開發板》–>《開發板管理員》。在搜尋列內打 STM32 Core 並選擇 1.3.0 版安裝。 此時就會開始下載 STM32 相關的資訊和檔案,稍候完成安裝。

安裝完成後,就可以指定開發板的類型成本文所使用的 STM32 Nucleo-64 平台。

  1. 《工具》–>《開發板》選擇 Nucleo-64
  2. 《工具》–>《Part number》 選擇 Nucleo F303RE
  3. 《工具》–>《Upload method》選擇 ST-Link

編譯執行 Hello World!

到了這一步,所有的設定大都完成了。可以開始進行編譯+上傳,由於 Arduino IDE 編譯時預設是靜悄悄,這樣會讓我感到很焦慮不曉得還要多久。所以我也會將《檔案》–>《偏好設定》裡的《顯示詳細輸出》都打勾。

接著,我們就可以貼上下面的範例來進行測試。

然後將 Nucleo-64 的板子插上,並按下 Ctrl+U 以進行編譯和上傳。燒錄完畢後,就可開啟 TeraTerm 來監控 Nucleo-64 的 Console,應該就會一直印出 Hello! World! 了。

結語

這篇文章其實沒什麼深度,算是一個進入 Arduino 的紀念吧。Arduino 初始的用意,是要提供一個簡單的平台供初學者快速入門,這也吸引了大批的使用貢獻了很多週邊的 Library。所以大家對 Arduino 的要求越來越高,也很多被拿來開發產品了。雖然也沒什麼不行,只是好像已跟初始的目的不同,一但一個東西紅了,各式各類的需求也都出籠了~~~

Leave a Reply