微控制器開發設計之 十層功力

2022-08-10 01:03:20 字數 2551 閱讀 3696

第一層/我來了

處在這一層的典型是可以用c語言寫簡單的邏輯控制,如閃爍led,簡單數碼管顯示,簡單外圍模組驅動實驗。一般對微控制器感興趣,經常動手實踐的人,半年左右,可以練到此地步(針對沒有接觸過微控制器的人而言)。

此層最典型的示例就是,掃瞄按鍵時候,檢測按下--延時20ms--再次檢測按下--返回鍵值或等待釋放。如果你是這樣做的,或者正在這樣做,毫無懸念,應該處於這個級別。對於95%的電類專業學生來說,畢業時候,遠遠低於這個級別,剩下的5%則依次分布在各層上。這也是為什麼學微控制器的人成千上萬,而會用的人寥寥無幾的原因。

第二層/真的打呀

步入這一層的典型標誌就是開始思考自己所寫的程式是否能夠有一點實用價值。譬如應用在實際工程專案中。在這一層,應該開始思考如何讓程式結構簡單模組化,如何合理的利用cpu的時間。我曾經寫過這一層的一點簡單教程。對付這一層應該是綽綽有餘了。

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

這一層是建立在第二層的基礎上面。從第二層跨越到這一層,需要很多**行的積累。在這一層,你對系統中的各個模組應該能夠很好的區分。同時對於時間的應用安排更加合理。在這一層,同時也應該考慮時間驅動的設計模式。如何讓cpu更有效率的利用起來,需要長時間的積累,並非看,想就可以弄明白,而是不斷的實踐。

第四層/狀態,你在**

這一層同樣建立在第三層基礎之上。掌握了以上三層,只要基本不涉及複雜演算法的程式,可以組織小規模的程式的編寫了。在這個時候,如何有效區分系統中的狀態,利用狀態來進行遷移,變得尤為重要。有人說通用結構好。反而我認為,針對特定應用來規劃更優秀。對於微控制器程式而言,幾乎沒有能夠一摸一樣的專案。而對於可移植性而言,能夠做到函式級別的復用,已經非常難能可貴了。

第五層/時間,還是時間

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

可丟失性是非重要的計時,它只要求階段性時間符合而不要求一定時間到達就必定發生,比如led閃爍的時間控制、倒計時執行某些功能性操作,通常是使用時間系統的時間發生標誌。同時在這一層如果能夠將windows程式設計中的一些優秀思想利用起來,則非常好。能夠領悟到這一層的,在我所知道的前輩高手中少之又少。

第六層/豐富你的視界

這一層是我自己安排的位置。相比前面幾層而言,我覺得它更為重要。寫微控制器程式,什麼最痛苦,當然是做介面最痛苦。乙個好的產品,離不開好的ui。在這裡,你需要設計簡單易用同時好看的人機介面非常不容易。

而且對於簡單單色點陣液晶的操作,能夠做到顯示介面非常好看,同時程式結構清晰,非常不容易。很多人都說,設計介面,就像繡花似的。太痛苦了。我一直在折騰,現在還沒有乙個定論,到底是通用的結構好,還是針對特定用途還設計好。按照我在第四層中的說法,這裡應該根據特定用途來規劃更好些。

第七層/我們說好的

這一層主要是各種各樣的協議的熟悉。非常重要,因為這個是和實際聯絡最為緊密的。工業現場的各種感測器,採集儀表如何將採集到的資料有效的發回給上位機。兩者能夠可靠的通訊,軟體層面上都離不開它們。

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

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

第九層/穿著作業系統去裸奔

什麼,都用上作業系統了,還想著裸奔。太花心了吧。非也。這裡是將前面幾層所提及到的一些思想與第八層融匯貫通。可以說,在這一層,需要對前面的每一層都非常的熟悉。並經過很多實際專案的磨練方能有所體會。

第十層/無招勝有招

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

寫在最後

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

不知道該如何學微控制器?那就看這裡吧

(stm32串列埠應用)

(stm32電機驅動)

(定時器)

(dma專題講解)

微控制器設計的十層功底

處在這一層的典型是可以用c語言寫簡單的邏輯控制,如閃爍led,簡單數碼管顯示,簡單外圍模組驅動實驗。一般對微控制器感興趣,經常動手實踐的人,半年左右,可以練到此地步 針對沒有接觸過微控制器的人而言 此層最典型的示例就是,掃瞄按鍵時候,檢測按下 延時20ms 再次檢測按下 返回鍵值或等待釋放。如果你是...

微控制器程式設計有十層功力,你現在在哪一層?

第一層 我來了 處在這一層的典型是可以用c語言寫簡單的邏輯控制,如閃爍led,簡單數碼管顯示,簡單外圍模組驅動實驗。一般對微控制器感興趣,經常動手實踐的人,半年左右,可以練到此地步 針對沒有接觸過微控制器的人而言 此層最典型的示例就是,掃瞄按鍵時候,檢測按下 延時20ms 再次檢測按下 返回鍵值或等...

微控制器設計的十層高階

第一層 我來了 處在這一層的典型是可以用c語言寫簡單的邏輯控制,如閃爍led,簡單數碼管顯示,簡單外圍模組驅動實驗。一般對微控制器感興趣,經常動手實踐的人,半年左右,可以練到此地步 針對沒有接觸過微控制器的人而言 此層最典型的示例就是,掃瞄按鍵時候,檢測按下 延時20ms 再次檢測按下 返回鍵值或等...