iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 4
2
IoT

熟悉Arduino的Maker必看!30天帶你快速入門基於STM32嵌入式開發~系列 第 4

[Day 4]-【STM32系列】Keil MDK + STM32Cubemx 的標準開發環境布置和 NUCLEO 板測試

寫在前面

疑?不是要用Arduino IDE做開發嗎?
痾...並沒有好嗎

STM32的功能過於強大,受限於Arduino IDE本來就是給新手好上手,專門給Arduino的開發用的。
如果真的想要使用Arduino的環境在STM32上雖然也是可以,引用函式庫也很方便。
但是這樣你就用Arduino就好了啊,幹嘛還特地花錢做跟Arduino也能辦到的事情。

STM32的功能更多,更強。簡單的程式用Arduino IDE寫可能還行,當程式慢慢開始龐大,
管理上可能就不太方便,所以我這裡就介紹STM32支援的 IDE。
那如果想用Arduino IDE的捧油就請自行斟酌囉!

https://ithelp.ithome.com.tw/upload/images/20201016/20120093HhyrDhyvVv.png
(我這應該算是濫用梗圖)

Arduino 有自己的IDE、開發環境,STM32當然也有
所以我們今天要介紹官方推薦好用的工具
測試我們的板子正不正常,燒錄的方式。

硬體部分

所需的材料有

  • STM32開發板一枚
  • usb mini 線材一條
  • 深不見底的荷包(總要買材料吧)

軟體部分

:-此系列由STM32CUBEIDE編寫。如果你是使用其他任何的IDE,程式仍然可以運行。但是你必須自行編寫一些項目

1.使用STM32CubeMX

STM32CubeMX近年來開發STM32比較流行的工具之一,它能幫我們初始化一些設定。
我們可以方便地調用內部 HAL函式庫,開發上便利快速,這工具越來越強大了。
https://ithelp.ithome.com.tw/upload/images/20200919/20120093STSbmvLUn4.png

2.Keil MDK Version 5

STM32CubeMX初始化設定生成檔案,
我們選用Keil 5 IDE編輯。

Keil是德國一家公司,也是一個微控制器開發平臺,
2005年被ARM公司收購,是目前ARM核心微控制器開發的主流工具。
uVision是Keil公司開發的整合式開發環境IDE
uVision有uVision2、uVision3、uVision4、uVision5四個版本,目前最新的版本是uVision5。
介面和微軟的Visual C++相似,提供C編譯器,還有便利的除錯工具,
軟體模擬方面也有很強大的功能。因此很多開發ARM的工程師,都對它十分喜歡。
https://ithelp.ithome.com.tw/upload/images/20200919/20120093tJTxPyxCyS.png

3.STM32 ST-LINK Utility

ST-LINK燒錄器,昨天有稍作提到
STM32 ST-LINK Utility本身包含ST-Link驅動。
若你安裝了STM32 ST-LINK Utility,你的ST-Link就不用額外安裝驅動,可以直接使用,比如Keil

STM32 ST-LINK Utility除了可以快速讀取FLASH外,還可快速讀取STM32晶片型號、ID、版本等信息
https://ithelp.ithome.com.tw/upload/images/20201016/20120093Q35SKuuiUQ.png

總結來說

  • Keil MDK :用於編輯韌體程式、燒錄、除錯等整合式開發環境
  • STM32 ST LINK Utility :用於操作燒錄器,對 MCU 進行燒錄、讀取程式
    等操作工具
  • STM32CubeMX :用於快速初始化 MCU ,建立範例專案等開發工具
  • STM32L0Cube Library :提供 STM32CubeMX 建立專案時的 Library
    https://ithelp.ithome.com.tw/upload/images/20201016/20120093oNYnKTSUtf.png

Step.1

安裝STM32CubeMX

下載並安裝STM32CubeMX,連結在此選擇最新版本,我目前是6.0.1。

下載完運行.exe安裝,基本一直下一步就行:
https://ithelp.ithome.com.tw/upload/images/20201016/20120093GekF7DsCMG.png
https://ithelp.ithome.com.tw/upload/images/20201016/20120093ouZUIShuup.png
https://ithelp.ithome.com.tw/upload/images/20201016/20120093xKwFWcKpP5.png
https://ithelp.ithome.com.tw/upload/images/20201016/20120093UHAtsVowvH.png
https://ithelp.ithome.com.tw/upload/images/20201016/20120093pafP8vhREx.png
https://ithelp.ithome.com.tw/upload/images/20201016/201200938djolNa7pI.png
https://ithelp.ithome.com.tw/upload/images/20201016/20120093e7frvIi5pi.png

STM32L0Cube Library

開啟STM32CubeMX後,點選 Help → Manage embedded software packages

https://ithelp.ithome.com.tw/upload/images/20200919/201200931RttyKOPEu.png

接著點選STM32Cube MCU Packages ,找到 STM32L0 ,選擇最新版本 1.10.0 打勾後,按下 Install Now ,等待下載與安裝完畢即可
https://ithelp.ithome.com.tw/upload/images/20200919/20120093SkIntTut5Y.png

Step.2

Keil MDK Version 5

去官網下載Keil MDK Version 5試用版,連結在此

需要填幾個基本資料後就可以下載了 個資不讓你們看XD
https://ithelp.ithome.com.tw/upload/images/20200919/20120093I1iQUUQZ0p.png

下載大力地按下去!
https://ithelp.ithome.com.tw/upload/images/20200919/20120093YBdjNa6Llg.png

下載完開啟安裝程式https://ithelp.ithome.com.tw/upload/images/20200919/20120093NpqEYwxM9U.png

https://ithelp.ithome.com.tw/upload/images/20200919/20120093nLpw0u6PPA.png

https://ithelp.ithome.com.tw/upload/images/20200919/20120093eJ4pLzu1kx.png

個資還是不讓你們看XD
https://ithelp.ithome.com.tw/upload/images/20200919/20120093lGaPLXjVyn.png

完成安裝
https://ithelp.ithome.com.tw/upload/images/20200919/20120093JJnd9qufGV.png

應該會馬上跳出這個,這是ARM的Pack Installer,會定期幫你更新library
https://ithelp.ithome.com.tw/upload/images/20200919/20120093hL0GpFIZuf.png

Step.3

安裝 ST-LINK 燒錄程式

上篇提及的NUCLEO-L053R8開發板上方就是燒錄器,只需要一條mini USB就可以執行燒錄了。先去官方網站下載ST-Link 主程式

https://ithelp.ithome.com.tw/upload/images/20200918/201200931MbTEL4igw.png

下載完就執行它!
https://ithelp.ithome.com.tw/upload/images/20200918/20120093aj4WH0YQba.png

原則上應該都是一直按下一步到底
https://ithelp.ithome.com.tw/upload/images/20200918/20120093c1pol2tCxC.png

按 NEXT
https://ithelp.ithome.com.tw/upload/images/20200918/20120093jcZbvaHarc.png

按 YES
https://ithelp.ithome.com.tw/upload/images/20200918/20120093RlhbYWajJE.png

按 NEXT
https://ithelp.ithome.com.tw/upload/images/20200918/20120093w0q4W1ehlN.png

安裝過程中應該會叫你安裝驅動程式,給它裝下去就對了!
https://ithelp.ithome.com.tw/upload/images/20200918/201200938UN9PfJ2Gt.png

信任並安裝驅動程式
https://ithelp.ithome.com.tw/upload/images/20200918/20120093oiXyBX5XSw.png

驅動安裝完成!
https://ithelp.ithome.com.tw/upload/images/20200918/201200933ZhFwhdtLW.png
燒錄器安裝完成!

安裝 ST-LINK 驅動程式

ST-Link 驅動程式可以在這裡下載,辦個帳號即可下載,不想辦號可以直接填你的姓名和電郵,之後就會把下載連結寄去你信箱。像這樣。
https://ithelp.ithome.com.tw/upload/images/20200919/20120093TCksJNBujm.png

下載完打開en.stsw-link009壓縮檔,執行dpinst_amd64.exe安裝驅動程式
https://ithelp.ithome.com.tw/upload/images/20200919/20120093Ek9Ygsnekv.png
原則上一直下一步就行,中間還會遇到幾個 Driver 問你要不要安裝,記得先勾選左下的選擇信任再安裝。安裝完成後就可以開始連接了。

連接 ST-LINK 燒錄器

更新驅動程式之前
記得先把JP5從原本靠左邊E5V的地方差到靠右邊U5V的位置
靠左邊E5V代表供電必須外接電源,此時USB端將不會供電給開發板
靠右邊U5V代表供電不須外接電源,此時USB端將會提供電給開發板
插上USB線(Type-A to Mini-B)一端接主板另一端插電腦上 LD1和LD3應該就會亮喔!
如果沒有調整JP5的位置,LD3是不會亮的,這點必須注意。

JP5調整前-JP5在12位置,靠向E5V
https://ithelp.ithome.com.tw/upload/images/20201016/20120093RKfejGEZjt.jpg

JP5調整後-JP5在23位置,靠向U5V
https://ithelp.ithome.com.tw/upload/images/20201016/20120093Y2DWWKvMGM.jpg

完成後接上USB線連接電腦,右上LD1、正中間靠左LD3將會發亮,電腦會跳出偵測到裝置的通知
https://ithelp.ithome.com.tw/upload/images/20201016/20120093aOp1JC0zZN.jpg
https://ithelp.ithome.com.tw/upload/images/20200918/20120093V99Pr4CPVR.png

打開剛剛安裝在桌面的ST-LINK
https://ithelp.ithome.com.tw/upload/images/20200918/20120093311jZ8LT2z.png

1.點選Target
2.Connect與開發板連接
~這可能會需要一些時間
(注意!連接期間不可按下主板上的RESET鈕,否則會連接失敗!)
https://ithelp.ithome.com.tw/upload/images/20200918/20120093VPTPEuXI0V.png

如果你跟我一樣跳出錯誤訊息,別緊張可以試著按照提示設置connect under reset的模式,基本可以解決大部分問題。
https://ithelp.ithome.com.tw/upload/images/20200918/20120093GMRi1eFXo1.png

到Target->Settings,將Mode設置connect under reset的模式,按OK。
https://ithelp.ithome.com.tw/upload/images/20200918/20120093PQdj7U01RD.png

看到這個畫面就代表成功連接了!
https://ithelp.ithome.com.tw/upload/images/20200918/20120093nGpQf8w1Dc.png

更新 ST-LINK 韌體驅動

原廠出貨到第一次使用期間可能燒錄器已經有新的更新了,但你的燒錄器的韌體可能還是舊版本,反正到時候使用他還是會叫你更新,不如一開始就先更新。相對也比較穩定。
1.點選Target
2.Firmware update
https://ithelp.ithome.com.tw/upload/images/20200918/20120093yIhmvg9NCG.png

Device Connect
連接的當下直到更新結束,更新程式會強制佔有 ST LINK 燒錄器,其他應用程式將無法訪問它直到更新結束。
https://ithelp.ithome.com.tw/upload/images/20200918/20120093lkB3u4huF7.png

自動偵測目前韌體的版本和開發環境,以及即將更新的版本,YES大力的按下去!
https://ithelp.ithome.com.tw/upload/images/20200918/20120093atmImpkH7e.png
https://ithelp.ithome.com.tw/upload/images/20200918/20120093OziOiq6bkS.png

出現Upgrade is successful就代表更新成功摟!
https://ithelp.ithome.com.tw/upload/images/20200918/20120093I9CjXbbx8G.png


STM32 Setup專案配置流程

首先打開STM32CubeMx並建立新的專案
https://ithelp.ithome.com.tw/upload/images/20200920/20120093peI4jkqXSK.png

根據你的開發板,選擇晶片編號和開發板。
這邊使用的是STM32L053R8,所以輸入晶片編號:STM32L053R8,LQFP64包裝的晶片就是我們的開發板,左邊星號加入我的最愛
https://ithelp.ithome.com.tw/upload/images/20200920/20120093Kxcwe4AGyA.png

進到我的最愛裡面,然後滑鼠連按兩下選擇的晶片,或是按右邊的Start Project進入設定頁面。
https://ithelp.ithome.com.tw/upload/images/20200920/20120093CDJgtEZfTM.png

這邊就是你設定的MCU的Pinout的地方了
我們在這邊會決定大部分IO將要拿來做甚麼功能用,在畫面左方勾選需要使用的功能,畫面中央選擇功能輸出的pinout,基本上有兩個一定會用到的功能:
1.RCC(Reset Clock Control),將HSE(High Speed Clock)、LSE(Low Speed Clock)均設為Crystal/Ceramic Resonator,預設會占用PC14、PC15、PH0、PH1
2.SYS中的debug Serial Wire打勾,預設會占用PA13、PA14
https://ithelp.ithome.com.tw/upload/images/20201005/20120093bsQwvd0FMF.png

接著來到Clock Configuration的地方,在這裡將設定你的MCU的運行速度
在HCLK的地方設定最大頻率32MHz並按下確定,內部會自動演算出合適的配方
HSE指高速外部Clock(一般為8MHz) ,LSE指低速外部Clock(一般為32kHz)
HSI指高速內部Clock(一般為16MHz),LSI指低速內部Clock(一般為65kHz)

剛剛設定RCC的HSE及LSE的主要作用就是Clock部分,因為HSE、LSE是外部頻率
簡單來說Clock信號是從外接來的,如果沒有設定預設會使用內部的HSI、MSI內部頻率。
所以在這裡系統頻率主要是由HSE經過PLL(來源有HSE和HSI/1or4,一般選HSE作為時鐘來源) → PLLCKL(通過設置PLL的倍頻因子,一般8Mx8/2=32MHz,最高32MHz) → 系統時鐘SYSCLK(一般SYSCLK=PLLCLK=32MHz) → HCLK(經由AHB除頻器32M/1=32M得到的結果)最後分到32MHz。
https://ithelp.ithome.com.tw/upload/images/20200920/201200937Ho3hKmwne.png

最後來到Configuration看設定了哪些東西,對IO可以做更進階的設定,目前沒有需要做變更,按那個像齒輪的東西直接生成程式碼吧!
https://ithelp.ithome.com.tw/upload/images/20200920/20120093bgqL2IFcA3.png

1.決定你的專案名稱(名字隨你高興,你自己知道就好,這裡我用BlinkLED)
2.決定你的存放路徑(專案要存哪裡的意思)
3.確認專案資料夾(每一個專案都是一個單獨的資料夾,預設資料夾名稱會是你的專案名稱)
4.選擇用來撰寫的IDE(我們安裝的MDK-ARM V5)
5.按ok生成
https://ithelp.ithome.com.tw/upload/images/20200920/20120093tWjjNV9wZg.png

直接open project吧!
https://ithelp.ithome.com.tw/upload/images/20200920/20120093XHDNL3PQey.png

專案資料夾裡面看起來會是這樣
https://ithelp.ithome.com.tw/upload/images/20200920/20120093qALeYy7XmX.png

打開專案後左邊展開資料夾並打開main.c檔案,此時MXcube已經幫你生成好檔案了
https://ithelp.ithome.com.tw/upload/images/20200920/20120093tzAS9MX0Ch.png

因為每次生成檔案為了不把原有user的程式碼蓋過去,程式碼都要寫在每一個USER CODE BEGIN 跟USER CODE END中間,如果沒照規則走,下次再生成檔案時所有不是在USER CODE BEGIN 跟USER CODE END中間的程式都會被覆蓋掉。

  /* USER CODE BEGIN  */

  /* USER CODE END  */

接著在https://ithelp.ithome.com.tw/upload/images/20200923/20120093R5eNDKo8nX.png 按右鍵選Add New Item to Group 'Application/User'
選擇 C File
Name 輸入: mycodes.c
Location 選擇 Src
按 Add 按鍵
https://ithelp.ithome.com.tw/upload/images/20200923/201200936EwQi0QUtR.png

接著在main.c定義void mycodes(void);函式
https://ithelp.ithome.com.tw/upload/images/20200923/20120093fXmKbbqu3G.png

main主程式中相同的位置加入mycodes();
https://ithelp.ithome.com.tw/upload/images/20200923/20120093dhMCPj893x.png

// 複製程式碼
#include "main.h"
#include "stm32l0xx_hal.h"

void mycodes(void){

	while(1){


    }
}

https://ithelp.ithome.com.tw/upload/images/20200923/20120093leBOhzSWhk.png

我們自己的code就寫在這個mycodes.c裡面,這樣寫的好處不僅程式碼方便觀看,也不怕重新生成後因為忘記沒寫在begin end裡面被消失

程式部分使用C語言編寫,往後實作都會寫在這個mycodes.c裡面,大致上是這樣,如果之後寫到忘記了也可以回來看看。今天就到這裡結束,下台一鞠躬


相關連結


結語

這又是後話了
進度有點慢
慢慢來...


上一篇
[Day 3]-【STM32系列】Overview of STM32 Board (下) -Arduino STM32 Nucleo 開發環境設定之HELLO WORLD!
下一篇
[Day 5]-【STM32系列】一閃一閃亮晶晶,點亮你的LED!
系列文
熟悉Arduino的Maker必看!30天帶你快速入門基於STM32嵌入式開發~30

尚未有邦友留言

立即登入留言