如何理解Arduino開(kāi)發(fā)?Arduino到底是個(gè)什么東東?
==== 原本我以為他就是一個(gè)IDE ====
通俗來(lái)看Arduino是個(gè)IDE的開(kāi)發(fā)環(huán)境,類似于 我們使用的MDK或者IAR開(kāi)發(fā)環(huán)境。當(dāng)然如果只是這么看,還是有點(diǎn)淺顯。
==== 在我看來(lái)Arduino本質(zhì) ====
Arduino開(kāi)發(fā)的本質(zhì),也是基于單片機(jī)的開(kāi)發(fā),但是他封裝的更為厲害,也就導(dǎo)致了,開(kāi)發(fā)更為方便。Arduino開(kāi)發(fā)的方式,讓我們離硬件更遠(yuǎn)了,離軟件更近一步。
==== 我們一起經(jīng)歷過(guò)單片機(jī)開(kāi)發(fā)的時(shí)代 ====
第【1】代:最初的單片機(jī)開(kāi)發(fā)的樣子——擼寄存器(C51的時(shí)代)
第【2】代: 后來(lái)又出現(xiàn)了更為方便的開(kāi)發(fā)方式,以及配置工具:擼庫(kù)函數(shù)(STM32為代表的時(shí)代)
第【3】代: 再到后來(lái)就是各種買(mǎi)不到芯片,沒(méi)辦法大家急于換平臺(tái),那么庫(kù)函數(shù)的麻煩也暴露了,(舉個(gè)板栗)以前STM32的庫(kù)函數(shù)不能用來(lái)配置Microchip的芯片(當(dāng)然Microchip也不好買(mǎi),想哭),現(xiàn)在庫(kù)被徹底做了一次封裝,變成了一個(gè)中間層的通用件,用來(lái)配置的API可能對(duì)大家都一樣,你換不換芯片,對(duì)軟件影響并不大,也就是可能你換其它平臺(tái)的硬件,實(shí)際要操作的軟件基本沒(méi)有變動(dòng),這也就是我理解的Arduino的主打天下。
==== Arduino的優(yōu)缺點(diǎn) ====
優(yōu)缺點(diǎn):直接學(xué)習(xí)Arduino也有壞處,他屏蔽了太多了的細(xì)節(jié),反而不利于剛接觸單片機(jī)的人員,系統(tǒng)的學(xué)習(xí)單片機(jī),凡事有利有弊吧。但是用起來(lái)提升開(kāi)發(fā)效率還是賊爽。
第一次接觸Arduino的你,可能會(huì)非常的不適應(yīng),例如Arduino開(kāi)發(fā)的方式主打是個(gè)一個(gè)文件,讓你極度的不適應(yīng),尤其不適合大型工程的開(kāi)發(fā),其實(shí)Arduino也可以分模塊進(jìn)行開(kāi)發(fā),這個(gè)后面再聊。一般Arduino可以簡(jiǎn)單到只有一個(gè)簡(jiǎn)單的工程文件:
第一次新建一個(gè)工程文件,你會(huì)發(fā)現(xiàn)找不到main函數(shù):
這讓一直習(xí)慣單片機(jī)開(kāi)發(fā)方式的你更加的難以適應(yīng),偷偷告訴你,其實(shí)他在這里,你也返現(xiàn)了,原來(lái)setup函數(shù)和loop函數(shù)只是main函數(shù)中創(chuàng)建的一個(gè)名為loopTask的任務(wù)的回調(diào)函數(shù):
客觀評(píng)價(jià):Arduino并不是萬(wàn)能的,至少現(xiàn)在不是,他所支持的芯片的型號(hào)也是有限,它的開(kāi)發(fā)方便是得益于無(wú)數(shù)的廠商和開(kāi)發(fā)者對(duì)其中間件的擴(kuò)充,例如我們所使用的ESP32系列的開(kāi)發(fā)板,都是由廠商做的封裝添加好的。