最近有小哥和我說,說零散的教程太多,不知道從哪里開始。
說實(shí)話,看到這個(gè)要求我心里挺高興的。
說明有人意識(shí)到了一個(gè)問題:零散學(xué)習(xí)不如系統(tǒng)學(xué)習(xí)。
和單片機(jī)打了14年交道,回頭看自己走過的路。
整理了一下這幾年寫過的幾百篇行業(yè)干貨,有時(shí)候也會(huì)想:如果當(dāng)年有人給我這些筆記,我起碼能少走五年彎路。
今天我就把這些筆記,總結(jié)出10個(gè)核心要點(diǎn)。
剛學(xué)單片機(jī)的時(shí)候,什么都想學(xué)。
51、STM32、ESP32、Arduino,買了一堆開發(fā)板。
結(jié)果每個(gè)都學(xué)了點(diǎn)皮毛,哪個(gè)都不精通。
趁早明白一個(gè)道理:貪多嚼不爛。
專注一個(gè)平臺(tái),深入學(xué)進(jìn)去,比學(xué)十個(gè)半吊子強(qiáng)。
剛開始建議你選STM32,或者國產(chǎn)MCU,資料多,社區(qū)活躍,找工作認(rèn)這個(gè)。
我剛開始學(xué)的時(shí)候,視頻教程看了一大堆。
看完覺得懂了,一動(dòng)手就傻眼。
為什么?因?yàn)榭唇坛淌潜粍?dòng)的,做項(xiàng)目是主動(dòng)的。
教程里講的你都會(huì),一到自己做項(xiàng)目就不知道怎么下手。
別光看教程,以項(xiàng)目為師。
找個(gè)簡單的項(xiàng)目,跟著做,遇到問題學(xué)什么。
這樣學(xué)的東西,才是真正屬于你的。
很多人只學(xué)軟件,不學(xué)硬件。
或者只學(xué)硬件,不學(xué)軟件。
這樣是不對的。
嵌入式工程師,硬件軟件都得懂。
你不用成為硬件專家,但至少能看懂原理圖。
你不用成為軟件架構(gòu)師,但至少能寫出規(guī)范的代碼。
硬件軟件都懂,你才能做出好的產(chǎn)品。
我剛工作的時(shí)候,覺得寫代碼重要。
后來發(fā)現(xiàn),調(diào)試能力更重要。
代碼誰都會(huì)寫,但不是誰都能快速定位問題。
你花一天找一個(gè)bug,別人花十分鐘。
這就是差距。
學(xué)會(huì)使用調(diào)試工具,學(xué)會(huì)分析方法。
學(xué)會(huì)看日志,學(xué)會(huì)復(fù)現(xiàn)問題。
這些能力,比會(huì)寫更多代碼更重要。
算法要學(xué),但別沉迷。
嵌入式開發(fā)里,數(shù)據(jù)結(jié)構(gòu)用得更多。
隊(duì)列、棧、鏈表、狀態(tài)機(jī),這些才是大部分項(xiàng)目通用的。
而算法很多是針對項(xiàng)目,行業(yè),你可能一輩子都用不上。
時(shí)間花在刀刃上,學(xué)那些真正有用的東西。
很多人覺得代碼規(guī)范是束縛,影響開發(fā)效率。
其實(shí)規(guī)范是幫助你寫出好代碼的工具。
命名規(guī)范、注釋規(guī)范、模塊化規(guī)范,這些都要遵守。
你一個(gè)人寫的時(shí)候,覺得規(guī)范沒用。
等你和團(tuán)隊(duì)合作的時(shí)候,就知道規(guī)范的威力了。
好代碼別人能看懂,能維護(hù),能擴(kuò)展。
這就是規(guī)范的價(jià)值,現(xiàn)在寫好直接讓AI幫你優(yōu)化就好了,效率起碼提高90%。
做低功耗產(chǎn)品,光靠軟件不夠。
要從系統(tǒng)層面考慮。
芯片選型、電路設(shè)計(jì)、軟件架構(gòu),都得考慮功耗。
芯片選低功耗的,電路設(shè)計(jì)減少漏電。
軟件上用中斷喚醒、任務(wù)調(diào)度。
多方面配合,才能把功耗做下去。
用現(xiàn)成的庫很快,但你學(xué)不到東西。
建議你至少實(shí)現(xiàn)一遍完整的通信協(xié)議。
像我們項(xiàng)目6這種物聯(lián)網(wǎng)網(wǎng)關(guān)一樣,幀頭、地址、命令、數(shù)據(jù)、校驗(yàn),一個(gè)都不能少。
用代碼實(shí)現(xiàn)一遍,你對通信協(xié)議的理解就深了。
以后遇到任何通信協(xié)議,你都能快速上手。
如果你的代碼里if-else特別多,考慮用狀態(tài)機(jī)。
狀態(tài)機(jī)能把復(fù)雜的邏輯拆解成清晰的狀態(tài)。
每個(gè)狀態(tài)只干自己的事,狀態(tài)之間轉(zhuǎn)換有明確規(guī)則。
代碼可讀性高,可維護(hù)性強(qiáng)。
學(xué)會(huì)狀態(tài)機(jī),你的代碼會(huì)上一個(gè)臺(tái)階。
學(xué)完一個(gè)知識(shí)點(diǎn),做一個(gè)項(xiàng)目,要總結(jié)。
總結(jié)你的收獲,總結(jié)你的問題,總結(jié)你的改進(jìn)方向。
不總結(jié),學(xué)一個(gè)丟一個(gè),永遠(yuǎn)是新手。
總結(jié)能讓你的知識(shí)體系化,能讓你持續(xù)進(jìn)步。
我每天都會(huì)寫技術(shù)筆記,記錄當(dāng)天學(xué)到的東西。
十年下來,這些筆記成了我最寶貴的財(cái)富。
基于這10篇筆記,我給你一個(gè)學(xué)習(xí)路線。
第一個(gè)月,打好基礎(chǔ)。
選一個(gè)平臺(tái),學(xué)C語言,學(xué)單片機(jī)基礎(chǔ)外設(shè),硬件基礎(chǔ)。
GPIO、定時(shí)器、中斷、串口,這些要熟練。
這塊也可以找我獲取詳細(xì)學(xué)習(xí)路徑,以及一些教程資料包。
第二個(gè)月,做第一個(gè)項(xiàng)目。
比如我們433M無線門磁探測器(MC01)、Lora模塊這種入門項(xiàng)目,先分析項(xiàng)目功能需求,再把軟件從零完整做一遍。
遇到問題查資料,不懂就問。
第三個(gè)月,做第二個(gè)項(xiàng)目。
WG01這種進(jìn)階項(xiàng)目,涉及通信、協(xié)議、狀態(tài)機(jī)。
鞏固你的知識(shí),提升你的能力。
三個(gè)月下來,你就入門了。
后面就是持續(xù)學(xué)習(xí),持續(xù)實(shí)踐。
end

下面是更多無際原創(chuàng)的個(gè)人成長經(jīng)歷、行業(yè)經(jīng)驗(yàn)、技術(shù)干貨。
1.電子工程師是怎樣的成長之路?10年5000字總結(jié)
2.如何快速看懂別人的代碼和思維
3.單片機(jī)開發(fā)項(xiàng)目全局變量太多怎么管理?
4.C語言開發(fā)單片機(jī)為什么大多數(shù)都采用全局變量的形式?
5.單片機(jī)怎么實(shí)現(xiàn)模塊化編程?實(shí)用程度讓人發(fā)指!
6.c語言回調(diào)函數(shù)的使用及實(shí)際作用詳解
7.手把手教你c語言隊(duì)列實(shí)現(xiàn)代碼,通俗易懂超詳細(xì)!
8.c語言指針用法詳解,通俗易懂超詳細(xì)!