為什么STM32學了很久還是不會做項目?
????當工作那會,在一家軍工企業(yè)打工,當時的崗位是嵌入式開發(fā)工程師。那時候,我還是一枚小白,甚至C語言都沒學好。一個來自華為的老工程師帶著我學習、工作。他在華為的時候主要是做的C語言相關(guān)的開發(fā),51單片機了解一些。
????跟他一起做的第一個小項目是用STM32實現(xiàn)的。他翻看了一下STM32的相關(guān)demo,幾天之后那個小項目初見端倪。
????這個項目雖小,卻涉及到了上位機開發(fā)的C#、單片機開發(fā)用的C語言、圖形界面用到的PS以及CAN通信協(xié)議等。
????項目完成后,在跟他聊天過程中,我得知他之前對于CAN通信、STM32并不熟悉。
????What?或許這就是觸類旁通的結(jié)果。
????實際上,C語言是非常接近底層的開發(fā)語言,也是嵌入式開發(fā)的主要開發(fā)語言。學好C語言,不了解底層的微機原理是不可能的。寄存器、位操作、堆棧、內(nèi)存申請與釋放,這些知識點也都會接觸到。????回到本文的題目,做不了項目是因為一直以來學的都是皮毛,沒有學到實質(zhì)的東西。雖然學了很久,官方手冊看過嗎?恐怕一直都是在用標準庫、HAL庫之類的。????在這里并不是貶低庫開發(fā),其實,庫開發(fā)是一種高效的開發(fā)方式。高手也會用庫開發(fā)STM32項目,但是他們可能會盡力吃透所用的標準庫、HAL庫。開發(fā)庫就好比wheel,是很多工程師智慧的產(chǎn)物。如下圖是封裝好的外設(shè)驅(qū)動,有必要學習一下是怎么實現(xiàn)的。
????做底層本身確實要復雜一些,底層軟件工程師的成長周期確實要長一點。
????有人可能會反駁,現(xiàn)在各個廠家的配置工具都很完善,為什么我不把精力放在應用和算法上,而要放著現(xiàn)成的驅(qū)動不用,自己手寫呢?那你就去安心做個應用軟件工程師,別來攙和底層。????做單片機開發(fā),就得清楚今后的發(fā)展方向是什么。當個幾年軟件工程師,然后轉(zhuǎn)崗去做管理嗎?????倘若技術(shù)追求高一點的話,你努力的方向一定是系統(tǒng)架構(gòu)師。
????而要成為合格的系統(tǒng)架構(gòu)師,還得了解單片機底層是如何工作的,甚至還得具備相當程度的硬件知識,應用層的算法只能是錦上添花。
????而這些底層,之所以被稱之為“底層”,是因為它們確實就是整個系統(tǒng)框架里最基礎(chǔ)的部分。好比蓋大樓,這些就是地基。認真看官方手冊、寄存器手冊,每一個驅(qū)動都自己手寫,一點一點做。同時,學習電子元器件、電路原理等硬件知識。? ??其實,能堅持下來,就已經(jīng)打敗90%的人了,找工作自然也不是問題。
END
來源:網(wǎng)絡版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。
▍