單片機---Mac下的開發(fā)環(huán)境【2】(STM32千康、Arduino + PlatformIO IDE)

前言

前些日子寫了一篇單片機---Mac下的開發(fā)環(huán)境【1】(STC單片機 + SDCC + Stcgal)(此文以STC單片機為例編寫)嫩痰,有朋友留言問能不能寫一篇Mac下STM32開發(fā)環(huán)境的文章,我回復一定會有的啄寡。剛好今天新買了一塊STM32核心板豪硅,所以把之前的承諾兌現(xiàn)一下。

有些身邊的小伙伴問我為什么一定要折騰Mac下各種項目的開發(fā)挺物,在此也簡單解釋一下懒浮。

    1. 因為Mac不止能夠滿足我的工作需求(Android、iOS開發(fā))识藤,同時體驗也是最好的砚著,移動開發(fā)領(lǐng)域的伙伴應(yīng)該都懂次伶;
    1. 因為愛好廣泛,比如會玩樹莓派稽穆、單片機冠王、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 的:

PlatformIO.png
PlatformIO IDE.png
For.png

看看它是多么的自信钉凌,也看看它的自信源自什么。更多的介紹或使用細節(jié)參照官網(wǎng)文檔捂人,很詳細并對閱讀與理解都非常友好御雕。對了矢沿,這么牛 X 的它,是開源的酸纲!

VSCode 的安裝沒什么好說的捣鲸,簡單說一下 PlatformIO IDE 插件的安裝,如下圖:

PlatformIO IDE Extension.png

打開 VSCode 后進入擴展搜索界面闽坡,選擇 PlatformIO IDE 插件栽惶,隨后點擊 Install 按鈕,安裝完成后需要重啟 VSCode 激活插件疾嗅。插件如果安裝成功外厂,左下角就會有一個小房子圖標,并且默認每次啟動 VSCode 都是啟動 PlatformIO IDE(可以關(guān)閉此選項)代承。
PIO Home.png

看到這個界面就說明 PlatformIO IDE 安裝完成了汁蝶。


一、STM32 開發(fā)板基于此開發(fā)環(huán)境的基本使用

硬件:

  • STM32F103C8T6 最小板
  • ST-LINK V2

我手里的 STM32 開發(fā)板是 STM32F103C8T6 小系統(tǒng)板论悴,很便宜掖棉,TB上賣十幾塊錢。
編程器用的是 ST-LINK V2膀估,TB上也是一搜一大把幔亥。如下圖:


STM32 Devices.png

現(xiàn)在我們進入正題,先簡單概括一下我們需要做的工作(調(diào)試察纯、仿真相關(guān)的部分暫時不討論紫谷,日后會專門整理這部分的文章。現(xiàn)階段我們只關(guān)心如何把正確的代碼正確的運行在芯片上):

  • 新建項目
  • 編寫代碼
  • 編譯項目
  • Upload
  • End

新建項目

New Project.png
打開 PlatformIO IDE捐寥,選擇 New Project笤昨,會彈出如下對話框:
Dialog.png
填寫項目名稱,選擇對應(yīng)的板子握恳,選擇Framework瞒窒,工程文件保存的路徑。
這里需要強調(diào)的是工程文件路徑中一定不要有中文乡洼!否則新建工程時會報錯崇裁。 可以使用 IDE 默認保存路徑,也可以自己定義路徑束昵。

然后點擊 Finish 按鈕拔稳,開始創(chuàng)建項目文件,第一次創(chuàng)建時需要下載依賴锹雏,時間稍稍長一點巴比,請耐心等待。
Creating.png

項目創(chuàng)建完成后如下圖:
Initialized.png
左邊是項目文件樹,這里我們先重點關(guān)注 src/main.cpp 和 platformio.ini 這兩個文件轻绞。
  • 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)的編譯工具和依賴的框架既棺,編譯過程終端如下:

Compile1.png
Compile2.png

Upload

首先將 STM32 開發(fā)板通過 ST-LINK V2 連接到 Mac,使用快捷鍵 control+option+U 或者點擊左下角的 Upload 按鈕進行燒錄懒叛,如下圖:

Upload.png
如此丸冕,就燒錄成功了,這時你應(yīng)該可以看到開發(fā)板上的 LED 在閃爍了芍瑞。STM32 在 Mac 下的簡單開發(fā)介紹就告一段落了晨仑。

但是這里要重點提及一下 Upload 協(xié)議褐墅,看上圖中紅框中的信息可知拆檬,燒錄過程需要配置協(xié)議,可用的協(xié)議有上面幾種妥凳,其中包括我使用的 stlink竟贯,每個協(xié)議第一次使用的時候會安裝對應(yīng)的協(xié)議棧。

還有到現(xiàn)在為止我們還沒有操作我上面提及的需要關(guān)注的另一個文件 --- platformio.ini, 我們打開它看一下里面都有哪些內(nèi)容:
platformio.ini

相信不需要我解釋大家都能很直觀的看明白內(nèi)容的作用是什么逝钥。
這里我提及一下 Upload Protocol屑那,實際上我們可以再這里指定協(xié)議,例如添加如下配置信息:

upload_protocol = stlink

到文件中:
upload_protocol.png

這樣就指定了此項目使用 stlink 協(xié)議進行燒錄艘款。因為我沒有 jlink 等其他設(shè)備持际,所以沒辦法在這里給大家演示了。

**最后在多說一句哗咆,通常 STM32 開發(fā)過程中少不了 STM32Cube蜘欲,PlatformIO IDE 對此是支持的,詳見:STM32Cube — PlatformIO documentation晌柬,而且不得不提的是姥份,意法半導體這些年很多工具都已實現(xiàn)跨平臺,其中就有 STM32CubeMX年碘,這點太贊了澈歉!更多的具體細節(jié)大家可以在評論區(qū)一起討論。


二屿衅、Arduino 基于此開發(fā)環(huán)境的基本使用

硬件:

  • Arduino Nano 板

手里有塊 Arduino Nano 板子埃难,就以此板為例簡單介紹一下 Arduino 如何使用此開發(fā)環(huán)境。
Arduino.png

不要在意我這塊沒有官方授權(quán)的板 ??

步驟與 STM32 開發(fā)過程幾乎一樣,不同的地方在于凯砍,我們這里使用板載 USB 轉(zhuǎn)串口箱硕,所以必須要指定 Upload 端口,稍后會講悟衩。過程如下:

  • 新建項目
  • 編寫代碼
  • 編譯項目
  • Upload(須在 platformio.ini 文件中配置 Upload 端口)
  • End

新建項目

點擊新建項目剧罩,然后配置項目選項:
Arduino Nano Project.png

這里需要注意的是 Nano 有兩種 Bootloader,我這塊板子使用的是舊版的座泳,這個不要選錯惠昔,不然無法燒錄。項目創(chuàng)建成功后:

main.cpp
platformio.ini

編寫代碼

寫一個與前面 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 按鈕:

Compile.png

Upload

先將 Arduino Nano 通過 Micro USB 連接至 Mac

Arduino Nano

連接好之后啦扬,我們先像 STM32 一樣不進行任何配置,直接執(zhí)行 Upload 操作凫碌,結(jié)果如下:

Upload without config port

上圖紅色框出來的地方可以看到扑毡,IDE Auto-detected 一個端口,可是這個端口是錯的盛险,導致 Upload 操作失敗瞄摊,那么要如何解決呢?其實很簡單苦掘,在 platformio.ini 文件中配置一下即可:

upload_port

紅色框中的代碼是配置燒錄時所用的端口信息换帜,這里是我的端口信息,大家要配置自己實際使用的端口鹤啡」咄眨可以通過

 ~  ls /dev/tty.*

命令查看端口情況。

配置好 upload_port 之后揉忘,我們再次燒錄:


Uploaded.png

大功告成 ??

最后: 其實我本想測試一下 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é)果。

---The End

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛋哭,一起剝皮案震驚了整個濱河市县习,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谆趾,老刑警劉巖躁愿,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沪蓬,居然都是意外死亡彤钟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門跷叉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逸雹,“玉大人,你說我怎么就攤上這事云挟“鹪遥” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵植锉,是天一觀的道長辫樱。 經(jīng)常有香客問我峭拘,道長俊庇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任鸡挠,我火速辦了婚禮辉饱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拣展。我一直安慰自己彭沼,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布备埃。 她就那樣靜靜地躺著姓惑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪按脚。 梳的紋絲不亂的頭發(fā)上于毙,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音辅搬,去河邊找鬼唯沮。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的介蛉。 我是一名探鬼主播萌庆,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼币旧!你這毒婦竟也來了践险?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤吹菱,失蹤者是張志新(化名)和其女友劉穎捏境,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毁葱,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡垫言,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倾剿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筷频。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖前痘,靈堂內(nèi)的尸體忽然破棺而出凛捏,到底是詐尸還是另有隱情,我是刑警寧澤芹缔,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布坯癣,位于F島的核電站,受9級特大地震影響最欠,放射性物質(zhì)發(fā)生泄漏示罗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一芝硬、第九天 我趴在偏房一處隱蔽的房頂上張望蚜点。 院中可真熱鬧,春花似錦拌阴、人聲如沸绍绘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陪拘。三九已至,卻和暖如春纤壁,著一層夾襖步出監(jiān)牢的瞬間左刽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工摄乒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悠反,地道東北人残黑。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像斋否,于是被迫代替她去往敵國和親梨水。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容