前言
前些日子寫了一篇單片機---Mac下的開發(fā)環(huán)境【1】(STC單片機 + SDCC + Stcgal)(此文以STC單片機為例編寫)嫩痰,有朋友留言問能不能寫一篇Mac下STM32開發(fā)環(huán)境的文章,我回復一定會有的啄寡。剛好今天新買了一塊STM32核心板豪硅,所以把之前的承諾兌現(xiàn)一下。
有些身邊的小伙伴問我為什么一定要折騰Mac下各種項目的開發(fā)挺物,在此也簡單解釋一下懒浮。
- 因為Mac不止能夠滿足我的工作需求(Android、iOS開發(fā))识藤,同時體驗也是最好的砚著,移動開發(fā)領(lǐng)域的伙伴應(yīng)該都懂次伶;
- 因為愛好廣泛,比如會玩樹莓派稽穆、單片機冠王、ARM嵌入式,會用QT5開發(fā)個PC軟件驗證一下基于OpenCV的算法等等秧骑,導致我過去兩年一直同時使用Win10、Ubuntu扣囊、Mac OS這三個操作系統(tǒng)乎折,并且都是物理機。電腦多侵歇,項目也零散的分布在三臺電腦上面骂澄,隨著積累的項目越來越多,用來進入工作狀態(tài)的時間越來越長惕虑,頭都大了坟冲。
所以,為了化繁為簡溃蔫,決定所有工作健提、愛好都遷移到Mac上來。至于為什么選擇Mac伟叛,參上第1條私痹,畢竟要靠工作吃飯,更多的時間也都是花費在工作上面统刮,所以這個決定一點也不糾結(jié)紊遵。以上。
搭建開發(fā)環(huán)境
這篇文章與之前的那篇文章大不一樣侥蒙,重點是因為發(fā)現(xiàn)了一個牛X的工具---PlatformIO.
最終的開發(fā)環(huán)境:
- Mac系統(tǒng)版本: macOS Mojave
- VSCode(Visual Studio Code)
- PlatformIO IDE (VSCode 插件)
使用流程:
- 安裝 VSCode
- 安裝 PlatformIO IDE 插件
- 新建工程
- 編寫代碼
- 編譯暗膜、下載
- End
PlatformIO是什么?
Different microcontrollers normally have different developing tools. You probably thought that single unified development tool could be great.
不同的MCU通常都有不同的開發(fā)工具鞭衩。如果有一個統(tǒng)一的開發(fā)工具會是一件很棒的事情学搜。
這就是 PlatformIO 做到的事情。它統(tǒng)一了非常多的 MCU 的開發(fā)工具论衍,支持的 MCU 和 平臺 相當全面恒水,并且最重要的是它跨平臺,而且在 VSCode 上面有對應(yīng)的 PlatformIO IDE 插件(VSCode 到目前的勢頭想必鮮有人會質(zhì)疑它的統(tǒng)治力了吧)饲齐。
看看官網(wǎng)是怎么介紹 PlatformIO 和 PlatformIO IDE 的:
看看它是多么的自信钉凌,也看看它的自信源自什么。更多的介紹或使用細節(jié)參照官網(wǎng)文檔捂人,很詳細并對閱讀與理解都非常友好御雕。對了矢沿,這么牛 X 的它,是開源的酸纲!
VSCode 的安裝沒什么好說的捣鲸,簡單說一下 PlatformIO IDE 插件的安裝,如下圖:
看到這個界面就說明 PlatformIO IDE 安裝完成了汁蝶。
一、STM32 開發(fā)板基于此開發(fā)環(huán)境的基本使用
硬件:
- STM32F103C8T6 最小板
- ST-LINK V2
我手里的 STM32 開發(fā)板是 STM32F103C8T6 小系統(tǒng)板论悴,很便宜掖棉,TB上賣十幾塊錢。
編程器用的是 ST-LINK V2膀估,TB上也是一搜一大把幔亥。如下圖:
現(xiàn)在我們進入正題,先簡單概括一下我們需要做的工作(調(diào)試察纯、仿真相關(guān)的部分暫時不討論紫谷,日后會專門整理這部分的文章。現(xiàn)階段我們只關(guān)心如何把正確的代碼正確的運行在芯片上):
- 新建項目
- 編寫代碼
- 編譯項目
- Upload
- End
新建項目
這里需要強調(diào)的是工程文件路徑中一定不要有中文乡洼!否則新建工程時會報錯崇裁。 可以使用 IDE 默認保存路徑,也可以自己定義路徑束昵。 然后點擊 Finish 按鈕拔稳,開始創(chuàng)建項目文件,第一次創(chuàng)建時需要下載依賴锹雏,時間稍稍長一點巴比,請耐心等待。
- src/main.cpp 很顯然是源代碼文件
- platformio.ini 是 PlatformIO 項目配置文件
編寫代碼
如上一篇文章采记,我們還是先寫一個最簡單的 Blink Led 程序來測試,代碼如下:
#include <Arduino.h>
// 定義 LED 驅(qū)動管腳
#define LED PC13
// Arduino 框架 setup 方法
void setup()
{
// put your setup code here, to run once:
pinMode(LED, OUTPUT);
}
// Arduino 框架 loop 循環(huán)
void loop()
{
// put your main code here, to run repeatedly:
// 讓 LED 點亮 100ms政勃,熄滅 100ms唧龄,循環(huán)閃爍。
digitalWrite(LED, LOW);
delay(100);
digitalWrite(LED, HIGH);
delay(100);
}
編譯項目
使用快捷鍵 control+option+B 或者點擊左下角的 Build 按鈕進行編譯奸远,第一次編譯的時候會先下載 STM32 相關(guān)的編譯工具和依賴的框架既棺,編譯過程終端如下:
Upload
首先將 STM32 開發(fā)板通過 ST-LINK V2 連接到 Mac,使用快捷鍵 control+option+U 或者點擊左下角的 Upload 按鈕進行燒錄懒叛,如下圖:
但是這里要重點提及一下 Upload 協(xié)議褐墅,看上圖中紅框中的信息可知拆檬,燒錄過程需要配置協(xié)議,可用的協(xié)議有上面幾種妥凳,其中包括我使用的 stlink竟贯,每個協(xié)議第一次使用的時候會安裝對應(yīng)的協(xié)議棧。
還有到現(xiàn)在為止我們還沒有操作我上面提及的需要關(guān)注的另一個文件 --- platformio.ini, 我們打開它看一下里面都有哪些內(nèi)容: 相信不需要我解釋大家都能很直觀的看明白內(nèi)容的作用是什么逝钥。
這里我提及一下 Upload Protocol屑那,實際上我們可以再這里指定協(xié)議,例如添加如下配置信息:
upload_protocol = stlink
到文件中:這樣就指定了此項目使用 stlink 協(xié)議進行燒錄艘款。因為我沒有 jlink 等其他設(shè)備持际,所以沒辦法在這里給大家演示了。
**最后在多說一句哗咆,通常 STM32 開發(fā)過程中少不了 STM32Cube蜘欲,PlatformIO IDE 對此是支持的,詳見:STM32Cube — PlatformIO documentation晌柬,而且不得不提的是姥份,意法半導體這些年很多工具都已實現(xiàn)跨平臺,其中就有 STM32CubeMX年碘,這點太贊了澈歉!更多的具體細節(jié)大家可以在評論區(qū)一起討論。
二屿衅、Arduino 基于此開發(fā)環(huán)境的基本使用
硬件:
手里有塊 Arduino Nano 板子埃难,就以此板為例簡單介紹一下 Arduino 如何使用此開發(fā)環(huán)境。
- Arduino Nano 板
不要在意我這塊沒有官方授權(quán)的板 ??
步驟與 STM32 開發(fā)過程幾乎一樣,不同的地方在于凯砍,我們這里使用板載 USB 轉(zhuǎn)串口箱硕,所以必須要指定 Upload 端口,稍后會講悟衩。過程如下:
- 新建項目
- 編寫代碼
- 編譯項目
- Upload(須在 platformio.ini 文件中配置 Upload 端口)
- End
新建項目
點擊新建項目剧罩,然后配置項目選項:這里需要注意的是 Nano 有兩種 Bootloader,我這塊板子使用的是舊版的座泳,這個不要選錯惠昔,不然無法燒錄。項目創(chuàng)建成功后:
編寫代碼
寫一個與前面 STM32 一樣的 Blink Led 程序挑势,管腳定義有變化镇防,LED_BUILTIN 高電平點亮 LED,代碼如下:
#include <Arduino.h>
// Arduino 框架 setup 方法
void setup()
{
// put your setup code here, to run once:
pinMode(LED_BUILTIN, OUTPUT);
}
// Arduino 框架 loop 循環(huán)
void loop()
{
// put your main code here, to run repeatedly:
// 讓 LED 點亮 100ms潮饱,熄滅 100ms来氧,循環(huán)閃爍。
digitalWrite(LED_BUILTIN, HIGH);
delay(100);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
}
編譯項目
與前面介紹的 STM32 一樣香拉,可以使用快捷鍵或者左下角 Build 按鈕:
Upload
先將 Arduino Nano 通過 Micro USB 連接至 Mac
連接好之后啦扬,我們先像 STM32 一樣不進行任何配置,直接執(zhí)行 Upload 操作凫碌,結(jié)果如下:
上圖紅色框出來的地方可以看到扑毡,IDE Auto-detected 一個端口,可是這個端口是錯的盛险,導致 Upload 操作失敗瞄摊,那么要如何解決呢?其實很簡單苦掘,在 platformio.ini 文件中配置一下即可:
紅色框中的代碼是配置燒錄時所用的端口信息换帜,這里是我的端口信息,大家要配置自己實際使用的端口鹤啡」咄眨可以通過
~ ls /dev/tty.*
命令查看端口情況。
配置好 upload_port 之后揉忘,我們再次燒錄:
大功告成 ??
最后: 其實我本想測試一下 STC 單片機用此開發(fā)環(huán)境的情況的跳座,雖然第一篇文章的環(huán)境也是使用 VSCode 作為編輯器,但是編譯和燒錄都要分別敲命令泣矛,還要寫 Makefile疲眷,實際體驗還是很一般的。PlatformIO IDE 支持 8051 單片機的您朽,Upload 工具配置為 stcgal 應(yīng)該也是沒問題的狂丝,所以這個環(huán)境應(yīng)該是滿足 STC 單片機開發(fā)的换淆,并且比我第一篇文章搭建的環(huán)境會更友好。我又要忙起來了几颜,所以就先不測試了倍试。測試過的小伙伴們可以在評論區(qū)曬一下結(jié)果。