使用VS Code開(kāi)發(fā)單片機(jī)程序

1. 概述

我在做單片機(jī)或嵌入式開(kāi)發(fā)术羔,接觸到的第一個(gè)IDE(集成的開(kāi)發(fā)環(huán)境)就是Keil杨箭,記得還是Keil2寞焙。但用過(guò)它的人都知道,雖然Keil是嵌入式開(kāi)發(fā)工具屆的經(jīng)典互婿,但是代碼在代碼編寫(xiě)捣郊、提示、檢索等方面還有所欠缺慈参。

使用過(guò)VSCode的呛牲,都被其開(kāi)放和簡(jiǎn)約優(yōu)雅折服!

VSCode作為一個(gè)Editor驮配,能否彌補(bǔ)Keil編輯器的欠缺呢娘扩?答案是可以的着茸。下面來(lái)介紹下怎么使用VSCode來(lái)編寫(xiě)單片機(jī)代碼。

2. VSCode 嵌入式開(kāi)發(fā)

首先需要安裝VSCode琐旁,這里略去涮阔,讀者自行百度即可,這里給出官網(wǎng)安裝文檔灰殴。

使用VSCode做嵌入式開(kāi)發(fā)敬特,基本分兩種:一種是VSCode+Keil插件,一種是VSCode+PlatformIO IDE插件牺陶。

無(wú)論哪種方式擅羞,都離不開(kāi)C語(yǔ)言開(kāi)發(fā)環(huán)境支持。所以VSCode需要先安裝C/C++支持义图。

2.1. VSCode搭建C/C++支持

這里不廢話,直接給出 VSCode 官網(wǎng)教程召烂,這里已經(jīng)描述的很詳細(xì)了碱工。

2.2. VSCode+Keil 插件

原理就是通過(guò)調(diào)用Uv4.exe來(lái)編譯項(xiàng)目源碼。這個(gè)方式相對(duì)簡(jiǎn)單奏夫,尤其是對(duì)于熟悉 Keil 的同學(xué)怕篷。

2.2.1 Keil 安裝

同樣的,按照步驟自行百度酗昼。這里給出官網(wǎng)下載地址廊谓。

注意下,Keil有四種產(chǎn)品麻削。

image.png

每個(gè)產(chǎn)品都是基于μVision+各自庫(kù)文件構(gòu)成蒸痹。
筆者使用最多的是MDK-Arm和C51,分別下載兩個(gè)產(chǎn)品呛哟,安裝到一起叠荠,分別激活兩個(gè)產(chǎn)品License。

2.2.2. Keil 插件安裝

安裝 Keil Assistant 插件扫责。

image.png

2.1.3. Keil 插件配置

配置 Keil 的 UV4.exe 文件路徑榛鼎。我這里安裝了C51和MDK兩個(gè)產(chǎn)品,所以配置兩個(gè)鳖孤。

image.png

2.2.4. 編譯下載

VSCode 打開(kāi)工作區(qū)(就是自己項(xiàng)目的目錄)者娱,一般會(huì)自動(dòng)識(shí)別Keil項(xiàng)目文件(xxx.uvpro 文件)。如果沒(méi)有識(shí)別可以手動(dòng)添加苏揣。完成后像下面這個(gè)樣子黄鳍。

image.png
image.png

現(xiàn)在可以愉快的編碼了。平匈。际起。完成后可以編譯拾碌,這里編譯實(shí)際上跟 Keil 中編譯一樣(其實(shí)就是調(diào)用Keil編譯,所以添加item文件、項(xiàng)目配置都需要回到Keil操作)咙崎。

image.png
image.png

2.2.5. 優(yōu)缺點(diǎn)對(duì)比

優(yōu)點(diǎn)

  • 代碼提示鼠冕、搜索功能強(qiáng)大,開(kāi)發(fā)更快捷防症、高效。
  • 可以快捷加入git項(xiàng)目版本管理哎甲。

缺點(diǎn)

  • 添加項(xiàng)目文件蔫敲,庫(kù)文件等,需要切換到 Keil 管理炭玫。
  • 無(wú)法DEBUG(我目前還未找到奈嘿,有知道的同學(xué)請(qǐng)告知)。

我一般是利用VSCode的強(qiáng)大編輯功能編碼吞加,用Keil的仿真軟件調(diào)試裙犹。

2.3. VSCode+PlatformIO IDE插件

PlatformIO IDE for VSCode — Quick-Start

2.3.1. PlatformIO IDE 介紹

PlatformIO 官網(wǎng)

PlatformIO 是一個(gè)跨平臺(tái)、跨架構(gòu)衔憨、多框架的專業(yè)工具叶圃,適用于嵌入式系統(tǒng)工程師和為嵌入式產(chǎn)品編寫(xiě)應(yīng)用程序的軟件開(kāi)發(fā)人員。官網(wǎng)對(duì)它的描述就是:嵌入式 C/C++ 開(kāi)發(fā)的新一代工具集践图。

PlatformIO 核心是由Python編寫(xiě)掺冠,獨(dú)立于平臺(tái)平臺(tái)運(yùn)行的。支持現(xiàn)在主流的平臺(tái)(Windows码党、Linux德崭、macOS、ARM卡片電腦等)揖盘、單片機(jī)(ATmega接癌、STC、STM32扣讼、ESP32等)和框架(Arduino缺猛、CMSIS、FreeRTOS等)椭符,使用標(biāo)準(zhǔn)項(xiàng)目模板荔燎,并支持多人協(xié)作。項(xiàng)目跨平臺(tái)移植便捷销钝,最重要的是開(kāi)源有咨。

2.3.2. PlatformIO IDE 插件安裝

按照下面安裝插件,安裝完成后重啟 VSCode蒸健。左邊導(dǎo)航欄會(huì)出現(xiàn)PlatformIO圖標(biāo)座享。Platformio IDE 工具欄位于 VSCode 狀態(tài)欄(左下角)婉商,包含了常用命令的快速訪問(wèn)按鈕(鼠標(biāo)放在上面會(huì)有提示)。

image.png

進(jìn)入 PIO Home 主頁(yè)渣叛,可以通過(guò)下圖左邊導(dǎo)航欄進(jìn)入丈秩,也可以通過(guò)底部導(dǎo)航欄“[房子]”直接進(jìn)入。

image.png

2.3.3. PlatformIO IDE 創(chuàng)建項(xiàng)目

點(diǎn)擊“New Project”使用項(xiàng)目向?qū)?chuàng)建一個(gè)項(xiàng)目淳衙,注意取消“Location”選鉤蘑秽,選自定義目錄存放項(xiàng)目工程。

這里以我的 ESP-WROOM-32 開(kāi)發(fā)板為例箫攀。第一次創(chuàng)建肠牲,需要下載依賴包、框架等靴跛,所以比較慢缀雳!
Board - 選在自己的開(kāi)發(fā)板型號(hào)
Framework - 開(kāi)發(fā)板對(duì)應(yīng)支持的框架。不同的開(kāi)發(fā)板型號(hào)梢睛,所支持的框架有所不同肥印。

image.png

2.3.4. 編譯下載

創(chuàng)建完成后,項(xiàng)目長(zhǎng)這個(gè)樣子扬绪。

image.png

編碼完成后,點(diǎn)擊底部導(dǎo)航欄的“√”進(jìn)行編譯裤唠。編譯通過(guò)后挤牛,點(diǎn)擊底部"→"下載代碼到開(kāi)發(fā)板

image.png
image.png

2.3.5. 優(yōu)點(diǎn)

首先是PlatformIO根據(jù)開(kāi)發(fā)板,可以根據(jù)框架快速構(gòu)建項(xiàng)目种蘸,讓我們可以把更多的時(shí)間和精力投放到產(chǎn)品和項(xiàng)目需求上來(lái)墓赴。
其他的~~~我也還在體驗(yàn)中,不過(guò)網(wǎng)上看大家投在推薦航瞭!

3. 結(jié)尾

不妨去嘗試一下新事物诫硕!

值得一提的是,PIO 也支持51單片機(jī)(好像有部分51支持不全)刊侯,51使用的SDCC(Small Device C compiler suite)編譯器章办。SDCC的語(yǔ)法擴(kuò)展與Keil的語(yǔ)法擴(kuò)展不同。

語(yǔ)法擴(kuò)展 項(xiàng)目 SDCC Keil
擴(kuò)展關(guān)鍵字名稱 以兩個(gè)下劃線開(kāi)頭,如__interrupt, __bit 無(wú)需下劃線
特殊功能寄存器(SFR)的聲明方式 __sfr __at (0x80) P1; sfr P1 = 0x80;
特殊功能寄存器位尋址的聲明方式 __sbit __at (0x87) P17; sbit P17 = P1^7;
中斷服務(wù)(ISR)函數(shù)的鏈接 需要在main函數(shù)前聲明 不需要
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滨彻,一起剝皮案震驚了整個(gè)濱河市藕届,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亭饵,老刑警劉巖休偶,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辜羊,居然都是意外死亡踏兜,警方通過(guò)查閱死者的電腦和手機(jī)词顾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碱妆,“玉大人肉盹,你說(shuō)我怎么就攤上這事∩介希” “怎么了垮媒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)航棱。 經(jīng)常有香客問(wèn)我睡雇,道長(zhǎng),這世上最難降的妖魔是什么饮醇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任它抱,我火速辦了婚禮,結(jié)果婚禮上朴艰,老公的妹妹穿的比我還像新娘观蓄。我一直安慰自己,他們只是感情好祠墅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布侮穿。 她就那樣靜靜地躺著,像睡著了一般毁嗦。 火紅的嫁衣襯著肌膚如雪亲茅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天狗准,我揣著相機(jī)與錄音克锣,去河邊找鬼。 笑死腔长,一個(gè)胖子當(dāng)著我的面吹牛袭祟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捞附,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巾乳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鸟召?” 一聲冷哼從身側(cè)響起想鹰,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎药版,沒(méi)想到半個(gè)月后辑舷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡槽片,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年何缓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肢础。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碌廓,死狀恐怖传轰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谷婆,我是刑警寧澤慨蛙,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站纪挎,受9級(jí)特大地震影響期贫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜异袄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一通砍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烤蜕,春花似錦封孙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至橱鹏,卻和暖如春膜蠢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚀瘸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工狡蝶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庶橱,地道東北人贮勃。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像苏章,于是被迫代替她去往敵國(guó)和親寂嘉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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