可能你已經學習了很久,但是當Leader拋給你一個STM32項目,你是不是依然手足無措?
有一朋友剛開始學習的51單片機,后來轉STM32了。主要是跟著網上的在線課程學習,自己下邊跟著敲代碼。過程中學過各種培訓機構出的視頻課程,接觸過操作系統,開發板上的例程都可以做出來。后來他又學習了PCB繪制,由于在學校的時候沒學到多少東西,而且不是電子類專業,陷入了迷茫,不知道該怎么學了。
記得在上大學的時候,專業課老師曾反復叮囑我們“師傅領進門,修行看個人”。這話之后還沒完,經常告誡我們要深入學習51單片機。當時沒有完全理解他的意思,直到工作若干年之后才知道。
在嵌入式領域,技術上有所精進,底層的東西少不了。通過51單片機的學習,可以理解單片機、SOC、微機原理相關的硬件知識。 當工作那會,在一家軍工企業打工,當時的崗位是嵌入式開發工程師。那時候,我還是一枚小白,甚至C語言都沒學好。一個來自華為的老工程師帶著我學習、工作。他在華為的時候主要是做的C語言相關的開發,51單片機了解一些。
跟他一起做的第一個小項目是用STM32實現的。他翻看了一下STM32的相關demo,幾天之后那個小項目初見端倪。 這個項目雖小,卻涉及到了上位機開發的C#、單片機開發用的C語言、圖形界面用到的PS以及CAN通信協議等。 項目完成后,在跟他聊天過程中,我得知他之前對于CAN通信、STM32并不熟悉。
What?或許這就是觸類旁通的結果。
實際上,C語言是非常接近底層的開發語言,也是嵌入式開發的主要開發語言。學好C語言,不了解底層的微機原理是不可能的。寄存器、位操作、堆棧、內存申請與釋放,這些知識點也都會接觸到。 回到本文的題目,做不了項目是因為一直以來學的都是皮毛,沒有學到實質的東西。雖然學了很久,官方手冊看過嗎?恐怕一直都是在用標準庫、HAL庫之類的。
在這里并不是貶低庫開發,其實,庫開發是一種高效的開發方式。高手也會用庫開發STM32項目,但是他們可能會盡力吃透所用的標準庫、HAL庫。開發庫就好比wheel,是很多工程師智慧的產物。如下圖是封裝好的外設驅動,有必要學習一下是怎么實現的。
做底層本身確實要復雜一些,底層軟件工程師的成長周期確實要長一點。
有人可能會反駁,現在各個廠家的配置工具都很完善,為什么我不把精力放在應用和算法上,而要放著現成的驅動不用,自己手寫呢?那你就去安心做個應用軟件工程師,別來攙和底層。
做單片機開發,就得清楚今后的發展方向是什么。當個幾年軟件工程師,然后轉崗去做管理嗎?
倘若技術追求高一點的話,你努力的方向一定是系統架構師。
而要成為合格的系統架構師,還得了解單片機底層是如何工作的,甚至還得具備相當程度的硬件知識,應用層的算法只能是錦上添花。
而這些底層,之所以被稱之為“底層”,是因為它們確實就是整個系統框架里最基礎的部分。好比蓋大樓,這些就是地基。認真看官方手冊、寄存器手冊,每一個驅動都自己手寫,一點一點做。同時,學習電子元器件、電路原理等硬件知識。 其實,能堅持下來,就已經打敗90%的人了,找工作自然也不是問題。
審核編輯:黃飛
-
單片機
+關注
關注
6032文章
44514瀏覽量
632964 -
CAN
+關注
關注
57文章
2715瀏覽量
463366 -
soc
+關注
關注
38文章
4119瀏覽量
217932 -
STM32
+關注
關注
2266文章
10871瀏覽量
354791 -
51單片機
+關注
關注
273文章
5697瀏覽量
123186
原文標題:為什么STM32學了很久還是不會做項目?
文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論