如果你是電子類專業的學生,將來大機率要用單片機嵌入式來謀生

2022-04-11     大方老師單片機

原標題:如果你是電子類專業的學生,將來大機率要用單片機嵌入式來謀生

如果你是電子類專業的學生,將來大機率要用單片/嵌入式謀生

首先51單片機是值得作為入門學習的!原因有幾點:

其一51是相關大學專業必學課程,其實是因為大部分的高校老師只51了;

其二51書籍多資料多,同第一條一樣是因為一些歷史原因;

其三51麻雀雖小五臟俱全,用來學習是不錯的;同樣AVR單片機或STM8等都可以用來入門,51還是太經典太主流了;

其四,單片機萬變不離其宗,學51也就會用其他單片機了(其實這是一個經驗的問題)。

很多答主都是在三、四點上講了很多細節化。我下面也稍微寫一點:

·其實不論用哪一款單片機,片內資源都是差不多的GPIO、定時Timer和中斷、通信UART/IIC/SPIADC/DAC等等等,這些資源就算換了一個單片機也會非常眼熟。

·然後是外設,其實這一部分51無關了LEDLCD、數碼管、各種傳感器等等,這些資源當你51平台學習過之後,在其他地方使用也是一樣的;

·最後單片機開發debug的能力,我覺得這和經驗有點關係了,這裡的經驗不是浮在水面上那種調用一API的業務經驗,而是深入理解單片機原理的經驗。我以前51玩得賊溜,後來一接STM32,幾乎總GPIO上犯錯!STM32GPIO需要初始化和設定輸出輸出STC51不用)然後還有什麼中斷向量表啊Flash的讀寫(先解鎖再擦除最後寫入)啊什麼的,51的時候可沒接觸過那麼多!

因此,感覺自己51玩得差不多的時候,就沒必要51上繼續研究了,可以走STM32的道路。那既然最後都要STM,為什麼我還是推51作為入門學習呢?因51單片機屏蔽了很多高級細節卻也足夠全面,正如我前面第三點:麻雀雖小五臟俱全。把麻雀研究透了再看其他鳥類不都是一個鳥樣嗎?只不過這隻鳥嘴長那隻鳥腳長嘛。

如果你只是業餘愛好者,想做點東西自己玩

可能大多數同學的情況可能就是屬於這一類。而凡事都有兩面性的,我這裡給的建議就是:51是完全沒有問題的!甚至不C語言開發都可以了!

51/STM32,那用什麼呢?兩類平台:ArduinoRaspberry pi

Arduino只需要學習一點C語言就可以玩各種硬體,如果有編程基礎那麼上手就非常快了!對比新手使51點亮一LED燈可能要半天時間,Arduino可能只需要五分鐘?為什麼呢?一個原因Arduino平台把能封裝的都封裝好了!開發者只管調用相應的接口即可,而使51STM32的原IDE可能還需要查找半天資料。

然後是樹莓派,樹莓派已經不算是單片機開發了而應該歸類Linux應用開發了。不限制C語言PythonJavaScriptLuaPHP等腳本語言都可以用。

那前面所說的C語言開發就是指在樹莓派上開發嗎?肯定不是了!對於各類微控制器已經有腳本語言開始進軍了,比MircoPythonMircoPython就是可運行在單片機上Python3腳本語言,可以Python對單片機進行各種操作等等。當然還有特self-important任何可以使JavaScript來編寫的應用,最終會JavaScript編寫JavaScript也有類似的平台Espruino

如果是作為一Web工程師,能PythonJS進行單片機開發幹嘛非要C語言呢?對吧?只是作為一種業餘愛好平時玩玩而已,真的沒有必要再去學51STM32單片機C語言開發MicroPythonEspruino都支STM32了。

但是!任何一個電子專業出身的人都應該能意識到!像這類微控制器腳本語言平台,本身肯定有很大的局限性!首先是性能問題,在單片機上能腳本語言肯定要有一個腳本解析器,這肯定是C語言編寫的了,那C語言運行腳本解析器,腳本解析器運行用戶代碼,最後出來的效果肯定慢了很多!當然如果單片機性能足夠可能看不出什麼。然後就是接口問題。因為我們是用腳本來控制單片機,如果底層解析器沒有把一些寄存器的配置引出來,我們就沒法做一些事情,比如說如果底層解析器不提供休眠接口,我們就沒法對單片機進行休眠,那就沒法更低功耗運行了。最後,就是限定板子導致的成本問題,目前來看,所有的腳本語言肯定沒法都支持全部微控制器,尤其是更低配置的微控制器,低端單片機有一個好處就是成本低廉:能STM32LED流水燈控制就沒必要用樹莓派,能51單片機就沒必要STM32,能555時基電路就沒必要51單片機了,能用分立元件就沒必要用晶片!

那就應該牴觸這類東西嗎?說真的我內心是有點牴觸的,我牴觸不代表我拒絕了解,後來簡單玩了這些東西,感覺開發真的不要太方便了!分分鐘就能做出一個自己想要產品原型,然後屁顛屁顛地去展示給其他人看,收到許多崇拜的星星眼。可是!如果要繼續深入開發甚至打算做出可用的產品,會感到非常力不從心。

所以,在我眼中這類東西Arduino及樹莓派一樣,都只是「玩具」而已。我的開發原則還是,能用原IDE的就堅決不用第三IDE,能C語言的就不上腳本語言。

當然了,上面這一節是「不51單片機直接STM32」這話題衍生出來的「單片機用腳本語言開發好不好」,其實都指向我想表達的一個主旨:浮於表面的學習是接觸不到核心的東西的,接觸不到核心知識而積累下來的那些經驗,換一個環境就懵懵懂懂不知所云雖然都是使JavaScript語言,但還真覺得前端知識Espruino平台開發所需知識是完全一樣的?

///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以~點我頭像黑色字體加蚣重呺也能領取///

如果有一些同學目標是想做自平衡小車或者飛行器這樣好玩的東西,或有類似情況的讀者,那麼我的建議就是:在有一定的單片機發基礎之後,上寶購買相關的學習套件,至於這個單片機發基礎,對於業餘愛好者來說是51開始還是STM32開始,問題真的不大。

文章來源: https://twgreatdaily.com/zh/547aa92d8a9cfc0d9cc217ec179db5af.html