專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
在過去的幾十年中,單片機(jī)的規(guī)格變化不大,但是語言和支持軟件的擴(kuò)展為應(yīng)用程序開發(fā)開辟了許多途徑。多年來,對單片機(jī)進(jìn)行編程涉及到兩種語言的選擇:C語言和匯編語言。但是隨著現(xiàn)在可用于微處理器的新語言,用戶在應(yīng)用程序設(shè)計(jì)中面臨更多選擇。
單片機(jī)開發(fā)用哪種語言最好?
英銳恩單片機(jī)開發(fā)工程師表示,這個問題沒有明確的答案,因?yàn)檫@取決于你正在處理的應(yīng)用程序。
(1)C語言與匯編語言
在單片機(jī)可以使用新語言之前,可用的兩個選擇是C和Assembly。在深入探討新語言之前,讓我們簡要地看一下它們。 即使C語言是在1970年代初期開發(fā)的,它也是一種流行的單片機(jī)語言。對于與單片機(jī)一起使用,C可以很好地運(yùn)行,因?yàn)镃具有處理內(nèi)存分配的能力,同時還可以執(zhí)行諸如if語句,循環(huán)和數(shù)學(xué)表達(dá)式之類的復(fù)雜功能。
匯編提供了C的替代方法,具有一些優(yōu)點(diǎn)。匯編是一種較舊的語言,通常使用特定于設(shè)備的代碼,并使用匯編程序?qū)嵱贸绦驅(qū)ζ溥M(jìn)行轉(zhuǎn)換。使用這種語言,用戶可以直接訪問CPU,在其中可以仔細(xì)調(diào)整例程以實(shí)現(xiàn)精確的計(jì)時應(yīng)用。匯編提供了更好的CPU使用率,以及C不支持的其他指令集,例如使用特定的BIT指令進(jìn)行位操作。
(2)MicroPython
Python是一種功能豐富的解釋語言,以其簡單,清晰和通用用途而著稱。這些功能也使該語言對于微處理器來說太大了。但是,在2013年的Kickstarter活動的幫助下,物理學(xué)家Damien George能夠?qū)ython改編成適用于單片機(jī)的較小版本MicroPython。
MicroPython代碼在MIT許可下是開源的。該語言使用標(biāo)準(zhǔn)Python庫的一小部分在微處理器的裸機(jī)上運(yùn)行。它只能使用256k的空間和16k的RAM進(jìn)行操作,但是它被設(shè)計(jì)為與常規(guī)Python完全兼容。
它最初設(shè)計(jì)為可在基于ARM的系統(tǒng)上運(yùn)行,包括BBC micro :bit,Adafruit Circuit Playground Express和MicroPython PyBoard,現(xiàn)在也可用于其他處理器,包括ESP8266和ESP32。
MicroPython在復(fù)雜項(xiàng)目的原型設(shè)計(jì)方面大放異彩。例如,在ESP8266上,可以通過幾個簡單的函數(shù)調(diào)用來創(chuàng)建IoT項(xiàng)目,以將MicroPython項(xiàng)目連接到本地Wi-Fi點(diǎn),然后開始將信息流傳輸?shù)組QTT代理。
(3)Blockly
Blockly是Google支持的開放源代碼編程庫,旨在通過使用拖放塊使代碼在視覺上具有邏輯性。
用戶無需依賴正常對話中沒有意義的單詞和短語,而是將塊放置到環(huán)境中并將它們連接在一起以定義程序的運(yùn)行方式。例如,用戶無需編寫IF語句,而是將IF塊拖到工作區(qū)中,并且將所得到的操作也拖到IF語句塊內(nèi)。
構(gòu)建塊后,用戶可以使用多種語言(包括JavaScript,Python,PHP,Lua和Dart)導(dǎo)出其Blockly代碼。Blockly系統(tǒng)的優(yōu)點(diǎn)之一是幾乎不可能發(fā)生錯誤(不是bug或錯誤,只是普通的舊錯誤),因?yàn)閴K需要特定的連接并且不允許不兼容的塊進(jìn)行連接。
盡管此編程方法可在包括Micro Bit和Adafruit Circuit Playground Express在內(nèi)的許多平臺上使用,但并非設(shè)計(jì)用于最終的商業(yè)產(chǎn)品。但是,它在原型設(shè)計(jì)階段非常有用,尤其是在需要概念驗(yàn)證且學(xué)習(xí)設(shè)備詳細(xì)信息會花費(fèi)太長時間(例如寄存器,配置位和IDE配置)的情況下。
(4)Arduino C++
盡管將其稱為“Arduino編程語言”,但Arduino實(shí)際上是使用良好的舊C++進(jìn)行編程的,并使用特定于Arduino的庫的子集。
Arduino C++與常規(guī)C++的區(qū)別包括單片機(jī)的通用例程,因?yàn)闃?biāo)準(zhǔn)庫C++函數(shù)無法在其有限的功能和內(nèi)存上運(yùn)行。使用這種較小版本的C++使該語言具有很高的可訪問性,因?yàn)樵S多設(shè)計(jì)人員已經(jīng)熟悉常規(guī)C++。實(shí)際上,通過使用編譯器,代碼可以用C++編寫,然后解釋為Arduino可用的代碼。
使用Arduino C++的優(yōu)勢在于它適用于商業(yè)環(huán)境,比諸如Python之類的較大語言更快,并且具有高度可移植性。庫使用通用函數(shù)自動處理最初為Uno在ARM內(nèi)核上編譯代碼。
(5)BASIC
BASIC是一種語言,最早出現(xiàn)于60年代,隨著80年代個人計(jì)算機(jī)的興起而進(jìn)入了鼎盛時期。由于其簡單性和解釋性,BASIC(初學(xué)者通用符號指令代碼的首字母縮寫)至今仍在使用,這使設(shè)計(jì)人員可以將更多的精力放在硬件上,而將精力放在軟件上。
單片機(jī)上使用的BASIC的兩個示例是PICAXE生產(chǎn)的并使用Microchip PIC單片機(jī)的BASIC Stamp(由Parallax生產(chǎn))和PICAXE。BASIC是用于原型甚至硬件開發(fā)的好語言,但由于其速度慢和能耗低,在商業(yè)產(chǎn)品中應(yīng)避免使用BASIC。
當(dāng)在單片機(jī)上使用時,會解釋BASIC,這會導(dǎo)致性能下降。但是,該語言的優(yōu)勢在于高度可移植。用BASIC編寫的任何代碼都可以在具有BASIC解釋器的任何設(shè)備上使用。 過去使用單片機(jī)時,設(shè)計(jì)人員必須選擇其首選平臺,然后學(xué)習(xí)其使用的語言。隨著語言和軟件的發(fā)展,如今,語言可以決定設(shè)計(jì)師使用哪個平臺。如果設(shè)計(jì)人員正在尋找特定功能,例如GPIO支持、網(wǎng)絡(luò),通過SSH進(jìn)行通信的能力或其他,那么語言和系統(tǒng)的選擇可能是尋找最佳開發(fā)路徑的重要因素。
以上就是英銳恩單片機(jī)開發(fā)工程師分享的單片機(jī)開發(fā)用哪種語言的知識。英銳恩專注單片機(jī)應(yīng)用方案設(shè)計(jì)與開發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)、運(yùn)放芯片和模擬開關(guān)。