當(dāng)前位置:首頁 > 公眾號精選 > 大魚機器人
[導(dǎo)讀]第一層/我來了 處在這一層的典型是可以用C語言寫簡單的邏輯控制,如閃爍LED,簡單數(shù)碼管顯示,簡單外圍模塊驅(qū)動實驗。一般對單片機感興趣,經(jīng)常動手實踐的人,半年左右,可以練到此地步(針對沒有接觸過單片機的人而言)。 此層最典型的示例就是,掃描按鍵時候




第一層/我來了


處在這一層的典型是可以用C語言寫簡單的邏輯控制,如閃爍LED,簡單數(shù)碼管顯示,簡單外圍模塊驅(qū)動實驗。一般對單片機感興趣,經(jīng)常動手實踐的人,半年左右,可以練到此地步(針對沒有接觸過單片機的人而言)。


此層最典型的示例就是,掃描按鍵時候,檢測按下--延時20ms--再次檢測按下--返回鍵值或等待釋放。如果你是這樣做的,或者正在這樣做,毫無懸念,應(yīng)該處于這個級別。對于95%的電類專業(yè)學(xué)生來說,畢業(yè)時候,遠(yuǎn)遠(yuǎn)低于這個級別,剩下的5%則依次分布在各層上。這也是為什么學(xué)單片機的人成千上萬,而會用的人寥寥無幾的原因。


第二層/真的打呀


步入這一層的典型標(biāo)志就是開始思考自己所寫的程序是否能夠有一點實用價值。譬如應(yīng)用在實際工程項目中。在這一層,應(yīng)該開始思考如何讓程序結(jié)構(gòu)簡單模塊化,如何合理的利用CPU的時間。我曾經(jīng)寫過這一層的一點簡單教程。對付這一層應(yīng)該是綽綽有余了。


第三層/時間,說愛你不容易


這一層是建立在第二層的基礎(chǔ)上面。從第二層跨越到這一層,需要很多代碼行的積累。在這一層,你對系統(tǒng)中的各個模塊應(yīng)該能夠很好的區(qū)分。同時對于時間的應(yīng)用安排更加合理。在這一層,同時也應(yīng)該考慮時間驅(qū)動的設(shè)計模式。如何讓CPU更有效率的利用起來,需要長時間的積累,并非看,想就可以弄明白,而是不斷的實踐。


第四層/狀態(tài),你在哪里


這一層同樣建立在第三層基礎(chǔ)之上。掌握了以上三層,只要基本不涉及復(fù)雜算法的程序,可以組織小規(guī)模的程序的編寫了。在這個時候,如何有效區(qū)分系統(tǒng)中的狀態(tài),利用狀態(tài)來進行遷移,變得尤為重要。有人說通用結(jié)構(gòu)好。反而我認(rèn)為,針對特定應(yīng)用來規(guī)劃更優(yōu)秀。對于單片機程序而言,幾乎沒有能夠一摸一樣的項目。而對于可移植性而言,能夠做到函數(shù)級別的復(fù)用,已經(jīng)非常難能可貴了。


第五層/時間,還是時間


時間具備精確性、模糊性、可丟失性,這三個特性是從應(yīng)用時間的不同角度來描述的。精確性應(yīng)用在精確地定時、計時的場合,它是個強實時的概念,比如測量頻率。模糊性應(yīng)用在需要穩(wěn)定計時的場合,它追求的是長時間的穩(wěn)定性,而忽略定時每刻發(fā)生的時刻,比如顯示日期時間。


可丟失性是非重要的計時,它只要求階段性時間符合而不要求一定時間到達就必定發(fā)生,比如LED閃爍的時間控制、倒計時執(zhí)行某些功能性操作,通常是使用時間系統(tǒng)的時間發(fā)生標(biāo)志。同時在這一層如果能夠?qū)INDOWS程序設(shè)計中的一些優(yōu)秀思想利用起來,則非常好。能夠領(lǐng)悟到這一層的,在我所知道的前輩高手中少之又少。


第六層/豐富你的視界


這一層是我自己安排的位置。相比前面幾層而言,我覺得它更為重要。寫單片機程序,什么最痛苦,當(dāng)然是做界面最痛苦。一個好的產(chǎn)品,離不開好的UI。在這里,你需要設(shè)計簡單易用同時好看的人機接口非常不容易。


而且對于簡單單色點陣液晶的操作,能夠做到顯示界面非常好看,同時程序結(jié)構(gòu)清晰,非常不容易。很多人都說,設(shè)計界面,就像繡花似的。太痛苦了。我一直在折騰,現(xiàn)在還沒有一個定論,到底是通用的結(jié)構(gòu)好,還是針對特定用途還設(shè)計好。按照我在第四層中的說法,這里應(yīng)該根據(jù)特定用途來規(guī)劃更好些。


第七層/我們說好的


這一層主要是各種各樣的協(xié)議的熟悉。非常重要,因為這個是和實際聯(lián)系最為緊密的。工業(yè)現(xiàn)場的各種傳感器,采集儀表如何將采集到的數(shù)據(jù)有效的發(fā)回給上位機。兩者能夠可靠的通信,軟件層面上都離不開它們。


第八層/別爭了,我來分配


還在為該如何分配CPU的時間嘛。其實不用苦惱。千萬不要什么東西都重新自己造。你想開車,不用自己造輪子吧,買一個就可以了。前人其實對這些問題都研究過非常多了。因此操作系統(tǒng)應(yīng)運而生。有人說,如果學(xué)會了在操作系統(tǒng)上面寫程序,將絕不想再回到以前的那種編程方式,聽起來非常誘人。


第九層/穿著操作系統(tǒng)去裸奔


什么,都用上操作系統(tǒng)了,還想著裸奔。太花心了吧。非也。這里是將前面幾層所提及到的一些思想與第八層融匯貫通??梢哉f,在這一層,需要對前面的每一層都非常的熟悉。并經(jīng)過很多實際項目的磨練方能有所體會。


第十層/無招勝有招


能夠達到這一層的應(yīng)該算的上是屈指可數(shù)的高手之一了。在這一層上,除了前面九層的熟練應(yīng)用之外。更牛的人應(yīng)該是可以設(shè)計操作系統(tǒng),設(shè)計gui之類的。要達到這一點,需要非常多的基礎(chǔ)知識,以及大量的專業(yè)知識以及實踐,再加以10-20年的實戰(zhàn)經(jīng)驗,以及一顆不沉寂的心。在這里,無招勝有招,非常熟悉MCU的特性,能夠利用這種各樣的技巧。這樣的高人,在國內(nèi)數(shù)一數(shù)二的電子論壇里也不在少數(shù)。


寫在最后


單片機的本質(zhì)只是一個工具。因此,更為重要的是模擬電子,數(shù)字電子以及其它基礎(chǔ)的專業(yè)課程。很多人都說大學(xué)學(xué)的東西沒有用,其實這個才是最大的謬論。萬丈高樓平地起,沒有這些專業(yè)基礎(chǔ)課程的支撐。以后工作中進步非常緩慢。道理很簡單。學(xué)的東西都是建立在以前的基礎(chǔ)課程上面的。如果一個連三極管的放大電路都不會分析的人,我不相信他可以設(shè)計出優(yōu)秀的電路來。因此作為一個合格的電子工程師,除了掌握廣泛的專業(yè)知識技能外,時刻不能夠停止學(xué)習(xí)的腳步。

-END-
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
免責(zé)聲明: 本文轉(zhuǎn)自網(wǎng)絡(luò),版權(quán)歸原作者所有,如涉及作品版權(quán)問題,請及時與我們聯(lián)系,謝謝!

猜你喜歡


老司機們都是怎么學(xué)習(xí)STM32的?
Linux 自學(xué)大全,16張思維導(dǎo)圖!
硬件工程師和軟件工程師哪個更有前途?

 最 后  
 

若覺得文章不錯,轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!
在公眾號內(nèi)回復(fù)「 更多資源 」,即可免費獲取,期待你的關(guān)注~
長按識別圖中二維碼關(guān)注

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉